Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Monoid -> Semigroup -> Magma refactor #39

Closed
JasonShin opened this issue Aug 25, 2019 · 1 comment
Closed

Monoid -> Semigroup -> Magma refactor #39

JasonShin opened this issue Aug 25, 2019 · 1 comment
Labels
help wanted Extra attention is needed

Comments

@JasonShin
Copy link
Owner

I think we've reached the point where we need to do a proper refactoring around Monoid, Semigroup and Magma.

As a result of introducing the initial baseline for traverse (https://github.com/JasonShin/fp-core.rs/blob/feature%2Ftraverse/fp-core/src/traverse.rs), we need to deal with data structures such as Vectors.

The current algebraic data structure implementations are not scalable, it's already very difficult to extend it to work with Vectors or even HashMap.

The goal of this ticket is to come up with a more scalable alternative to abovementioned data structures and adapt it into the existing type classes that rely on them, pretty much everything that we have built so far.

Ideally, we should structure it so it resembles
https://github.com/freebroccolo/algebra.rs

Also, think about the possibility of integrating im.rs for parallelism

Goals:

  • Traverse should work with the new data structures and should have an example code that traverses

vec![Some(1), Some(2), Some(3)] with fa of |x| x + 1 and returns Some(vec![2, 3, 4])

@JasonShin JasonShin added the help wanted Extra attention is needed label Aug 25, 2019
@JasonShin
Copy link
Owner Author

Didn't include Magma but created a baseline in #45

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant