Functional programming in Dart
- Type class hierarchy in the spirit of scalaz and the standard Haskell libraries
- Immutable, persistent collections, including IVector, IList, IMap, IHashMap, ISet and AVLTree
- Option, Either, State, Tuple, Free and other tools for programming in a functional style
- Evaluation, a Reader+Writer+State+Either+Future swiss army knife monad
- Type class instances (Monoids, Traversable Functors, Monads and so on) for included types, as well as for several standard Dart types
- Conveyor, an ultra experimental implementation of pure functional streaming
New to functional programming?
A good place to start learning is the excellent Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnason. I can not recommend this book highly enough.
- Super experimental!
- Somewhat exotic structure/API, since dartz is trying to jam type classes for higher kinded types into a language that lacks support for real type classes and higher kinded types... At least we have basic parametric polymorphism for functions/methods now!!!
- Most things are stack safe and reasonably efficient, but there are a couple of exceptions and plenty of room for further optimizations