A pure functional and generic programming library for Erlang, inspired by "scrap your boilerplate" and functional data structures.
datum is a pure functional and generic programming library for Erlang that implements higher-rank functional abstractions and patterns. It helps developers reduce boilerplate code by providing tools like option/either types, generic data structures, lenses, and monads, inspired by functional languages like Haskell and Scala.
Erlang developers seeking to adopt functional programming paradigms, reduce code boilerplate, and leverage advanced abstractions like monads, lenses, and generic data structures in their applications.
Developers choose datum for its comprehensive set of functional programming tools tailored for Erlang, enabling more expressive and maintainable code without relying heavily on macros, while drawing from well-established functional language concepts.
pure functional and generic programming for Erlang
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements option/either types, monads, and lenses inspired by Haskell and Scala, detailed in the feature overview for expressive error handling and data manipulation.
Promotes a 'scrap your boilerplate' approach to minimize macro usage, enhancing code maintainability as stated in the README's philosophy.
Provides pure functional data structures like red-black trees and heaps, based on Chris Okasaki's work, enabling efficient immutable operations.
Offers lazy streams for on-demand computed elements, optimizing memory usage for large datasets, as highlighted in the key features.
The library is described as 'still testing the limits of functional abstractions in Erlang,' which may lead to instability or breaking changes in future releases.
Requires familiarity with advanced concepts like monads and lenses not native to Erlang, posing a barrier for developers used to traditional styles.
Generic programming and lazy evaluation can introduce runtime costs compared to direct Erlang code, which might be critical for high-performance applications.