QFM086: Elixir Reading List - October 2025
Source: Photo by Markus Spiske on Unsplash
This month's Elixir Reading List focuses on language evolution and design patterns. Gradual set-theoretic types — Elixir v1.20.0-dev explores the upcoming type system enhancements in Elixir 1.20, bringing gradual typing capabilities to the language. Meanwhile, Polymorphism in Elixir | Joseph Koski's Blog examines different approaches to achieving polymorphic behaviour in functional programming contexts.
As always, the Quantum Fax Machine Propellor Hat Key will guide your browsing. Enjoy!

Links
Elixir protocols provide polymorphic behavior by dispatching function calls based on the runtime type of the first argument, allowing different implementations for different data types without inheritance. Unlike object-oriented interfaces, Elixir protocols can include a fallback implementation using @fallback_to_any true and defimpl Speak, for: Any, providing safe defaults when no specific type implementation exists. However, protocols have a key limitation: they dispatch only on the first argument, so heterogeneous comparisons (like comparing a Cat to a Duck) require relaxed pattern matching to avoid crashes.
Elixir is implementing set-theoretic types into its compiler, featuring a gradual type system that remains sound while allowing dynamic() types that preserve partial type information rather than discarding it entirely. The type system uses set operations (unions, intersections, negations) for composition and currently focuses on inferring types from existing programs to detect bugs without requiring code modifications, with user-provided type signatures planned for future releases.
Regards,
M@
[ED: If you'd like to sign up for this content as an email, click here to join the mailing list.]
Originally published on quantumfaxmachine.com and cross-posted on Medium.
hello@matthewsinclair.com | matthewsinclair.com | bsky.app/@matthewsinclair.com | masto.ai/@matthewsinclair | medium.com/@matthewsinclair | xitter/@matthewsinclair
Was this useful?