A collection of protocols and implementations for working with data structures in idiomatic Elixir.
Datastructures for Elixir is a library that provides a collection of protocols, implementations, and wrappers for working with data structures in Elixir. It solves the problem of Elixir's limited standard library and the inconsistent APIs of Erlang libraries by offering idiomatic Elixir interfaces with full protocol support.
Elixir developers who need robust data structure implementations beyond the standard library, especially those working with queues, stacks, sets, or dictionaries in a functional style.
Developers choose this library for its consistent, idiomatic Elixir APIs, protocol-based design, and comprehensive feature set that avoids the pitfalls of mixing Erlang libraries with Elixir code.
Datastructures for Elixir.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Defines unified interfaces like Sequence and Counted, ensuring all data structures work seamlessly with Elixir's protocol system, as detailed in the README's protocol list.
Provides Elixir-style function names and behaviors, solving the inconsistency of Erlang libraries, exemplified by helper modules like Dict and Seq for common operations.
Includes queues, stacks, sets, dictionaries, and sequences with full protocol support, addressing gaps in Elixir's standard library.
Offers utility functions in Seq and Dict modules for mapping, filtering, and reducing, enhancing functional data manipulation with specific functions like update/3 and with_index/1.
The README acknowledges that names are long, requiring aliases for convenience, which adds boilerplate code and can reduce readability.
Protocol implementations and abstraction layers may introduce performance penalties compared to direct Erlang library usage, especially in performance-critical loops.
Beyond the README, there's no mention of extensive guides, examples, or API documentation, which could hinder adoption and troubleshooting.