-
Notifications
You must be signed in to change notification settings - Fork 60
Releases: witchcrafters/witchcraft
Releases · witchcrafters/witchcraft
Monads (and reorganize)
Monads (and reorganize)
Pre-release
Pre-release
Monads
Finally, monads! Still could use more documentation, but they're here and they work 😄
[1, 2, 3] >>> fn x -> [x + 1] >>> fn y -> [y * x, y * 10, x - 1] end end #=> [2, 20, 0, 6, 30, 1, 12, 40, 2] [1, 2, 3] >>> fn x -> [x + 1] end >>> fn y -> [y * 10, y - 1] end #=> [20, 1, 30, 2, 40, 3]
Of course they work on things other than lists. I'll will be moving the ADT-specifc implementations to Algae, so if you want Maybe, Either, and friends, please use it in conjunction with that library.
Major Reorganization
Still a bunch more to do, but this is already much better. Merging to master, and will continue to tighten stuff up and work through the roadmap.
Assets 2
Applicative Functor
Applicative Functor
Pre-release
Pre-release
Applicative Functors are here!
Things to note:
wrap(i.e.: pure) &applyare here!- Operator for
apply:<<~and~>> - Reversed operator arrow direction for consistence with Elixir
- ie: in Haskell we think about
applyping "over" things (apply [(+1)] [1,2,3]) - In Elixir, we're piping thing into the application (
[1,2,3] ~>> [&(&1 + 1)]) - Can still write in the Haskell order, with reversed operators:
- Haskell:
(\x y -> x + y) <$> [1,2,3] <*> [4,5,6] - Elixir:
&(&1 + &2) <~ [1,2,3] <<~ [4,5,6]
- Haskell:
- ie: in Haskell we think about
- Operator for
- Have to exclude
Kernel.applyfor modules- In the future, we will either need to create a
use, or renameapply(probably the later)
- In the future, we will either need to create a
Assets 2
Functor
Functor
Pre-release
Pre-release
Functor protocol, functions, and spot-check helpers
- Only the covariant functor, more varieties will follow
Assets 2
Monoid
Monoid
Pre-release
Pre-release
First draft of the Monoid protocol