witchcraft
fuse
witchcraft | fuse | |
---|---|---|
3 | 2 | |
1,177 | 493 | |
0.3% | - | |
0.0 | 0.0 | |
8 months ago | about 2 years ago | |
Elixir | Erlang | |
Apache License 2.0 | MIT License |
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.
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
fuse
-
When "letting it crash" is not enough
Indeed. I do wish there were a few more "extras" in OTP, because "let it crash" needs some more details in some circumstances.
For instance if you have a system with a user interface and some various components, like say, a database, and the database becomes unavailable, you don't want the entire system to crash. You want it to display an error message to the user and maybe go into some kind of diagnostic mode or other "things are not normal" state.
Something like https://github.com/jlouis/fuse is one approach.
-
Elixir for Cynical Curmudgeons
> If you configure it well (the defaults are not always optimal) you can have your invisible mesh of services survive extended outages of the 3rd party APIs it depends on.
This is something that annoyed me a bit with OTP. The basic strategies aren't really enough for that, so you need something like https://github.com/jlouis/fuse
I wrote something like that myself, but it hasn't seen a ton of use: https://github.com/davidw/hardcore
What are some alternatives?
MapDiff - Calculates the difference between two (nested) maps, and returns a map representing the patch of changes.
lz4 - LZ4 bindings for Erlang
loom - A CRDT library with δ-CRDT support.
trie - Erlang Trie Implementation
key2value - Erlang 2-way map
fnv - Pure Elixir implementation of Fowler–Noll–Vo hash functions
flow - Computational parallel flows on top of GenStage
red_black_tree - Red-black tree implementation for Elixir.
monadex - Upgrade your pipelines with monads.
cuckoo - :bird: Cuckoo Filters in Elixir
dataframe - Package providing functionality similar to Python's Pandas or R's data.frame()
graphmath - An Elixir library for performing 2D and 3D mathematics.