https://github.com/spebbe/dartz
Functional programming in Dart
https://github.com/spebbe/dartz
dart functional-programming
Last synced: about 1 month ago
JSON representation
Functional programming in Dart
- Host: GitHub
- URL: https://github.com/spebbe/dartz
- Owner: spebbe
- License: mit
- Created: 2016-02-11T18:43:17.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2023-09-20T08:11:40.000Z (over 1 year ago)
- Last Synced: 2024-11-03T19:37:12.335Z (6 months ago)
- Topics: dart, functional-programming
- Language: Dart
- Size: 1.38 MB
- Stars: 756
- Watchers: 20
- Forks: 59
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
dartz
-----[](https://github.com/spebbe/dartz/blob/master/LICENSE) [](https://pub.dartlang.org/packages/dartz) [](https://github.com/spebbe/dartz)
Functional programming in Dart
* Type class hierarchy in the spirit of [cats](https://typelevel.org/cats/), [scalaz](https://github.com/scalaz/scalaz) and [the standard Haskell libraries](https://wiki.haskell.org/Typeclassopedia)
* Immutable, persistent collections, including IVector, IList, IMap, IHashMap, ISet and AVLTree
* Option, Either, State, Tuple, Free, Lens 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 implementation of pure functional streaming
* [Examples](https://github.com/spebbe/dartz/tree/master/example), showcasing core concepts##### New to functional programming?
A good place to start learning is the excellent [Functional Programming in Scala](https://www.manning.com/books/functional-programming-in-scala) by Paul Chiusano and Rúnar Bjarnason. I can not recommend this book highly enough.
You can also take a look at [Category Theory for Programmers](https://github.com/hmemcpy/milewski-ctfp-pdf) by Bartosz Milewski.##### Status
* Starting with version 0.10.0, Dart 2.12+ is required
* 0.9.x supports Dart 1 and older Dart 2 versions
* Basic type class structure and collection classes are relatively stable, but might see restructuring in future releases
* Optimized for dart2js/node/v8, with performance on the dart vm being of distant secondary concern
* Most things are stack safe and reasonably efficient, but there are a couple of exceptions and plenty of room for further optimizations
* The streaming/conveyor stuff is highly experimental
* The lens implementation is experimental and very bare bones##### License/Disclaimer
See [LICENSE](https://github.com/spebbe/dartz/blob/master/LICENSE)