algae
witchcraft
algae | witchcraft | |
---|---|---|
1 | 3 | |
340 | 1,177 | |
0.0% | 0.1% | |
0.0 | 0.0 | |
over 1 year ago | 8 months ago | |
Elixir | Elixir | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
algae
-
Functional Programming in Elixir with Witchcraft
When working with Witchcraft, you can use the predefined Algae.Either to create new instances of the Either data type. We can do that by using one of two structs: %Algae.Either.Left{left: value} or %Algae.Either.Right{right: value}.
witchcraft
-
How to Write a Functor in Elixir
If you’re interested in trying out more functors magic in Elixir, check out Witchcraft, which has been my main inspiration for this post.
-
Cool Elixir Libraries
Witchcraft – basically a port of Haskell's Prelude https://github.com/witchcrafters/witchcraft
-
Algebraic Data Types in Elixir
See also, Witchcraft [0] (adds ADTs to Elixir in a subjectively better way than Dialyzer) and Gleam [1] (not Elixir but its own full blown language that uses BEAM but with much more of a Haskell-like flavor) which both offer algebraic data types in their own ways.
I used to do a lot of Python and heard of Elixir as a marrying of BEAM and dynamic typing, so I started learning it. However, as I used it more, I actually moved to TypeScript and more recently Rust after I found that I actually liked thinking in types, and I truly did miss them from Elixir.
[0] https://github.com/witchcrafters/witchcraft
[1] https://github.com/gleam-lang/gleam
What are some alternatives?
hamler - Haskell-style functional programming language running on Erlang VM.
MapDiff - Calculates the difference between two (nested) maps, and returns a map representing the patch of changes.
loom - A CRDT library with δ-CRDT support.
key2value - Erlang 2-way map
flow - Computational parallel flows on top of GenStage
monadex - Upgrade your pipelines with monads.
dataframe - Package providing functionality similar to Python's Pandas or R's data.frame()
fuse - A Circuit Breaker for Erlang
sleeplocks - BEAM friendly spinlocks for Elixir/Erlang
remodel - :necktie: An Elixir presenter package used to transform map structures. "ActiveModel::Serializer for Elixir"
erlang-algorithms - Implementations of popular data structures and algorithms
bloomex - :hibiscus: A pure Elixir implementation of Scalable Bloom Filters