Witchcraft brings algebraic and category-theoretic abstractions—like semigroups, monoids, functors, applicatives, and monads—to Elixir in a pragmatic, protocol-driven way. It introduces a set of typeclass-style protocols and laws so data types can declare the operations they support and have those behaviors verified. The library encourages composability and pure transformations, letting you build pipelines where effects are modeled explicitly rather than hidden in ad-hoc helpers. Because the implementation leans on Elixir protocols, you can extend Witchcraft’s abstractions to your own structs without invasive inheritance hierarchies. It promotes predictable, law-abiding behavior through property-based testing helpers and a focus on algebraic reasoning. Teams reach for Witchcraft when they want to structure business logic with reusable, mathematically grounded patterns that remain idiomatic to the BEAM.
Features
- Provides type abstractions such as monoids, functors, monads, arrows, categories
- Embraces functional programming concepts inspired by Haskell
- Seamlessly integrates into Elixir codebases for more expressive FP patterns
- Includes accompanying libraries like Quark and TypeClass for enriched functionality
- Lightweight library—simple to adopt and drop in
- Supports algebraic constructs, enabling currying and composition idioms in Elixir