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