FLUTTER ECOSYSTEMspebbe/dartz
Dart 中的函数式编程

- Stars
- 771
- Forks
- 62
- 最近推送(UTC)
- 2023年9月20日
- 项目状态
- 未归档
语言Dart
原始 README
以下为英文项目原文快照,最新内容请访问 GitHub。
展开 / 收起项目 README
dartz
License Pub.dev Github Stars
Functional programming in Dart
- Type class hierarchy in the spirit of cats, scalaz and the standard Haskell libraries
- 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, showcasing core concepts
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.
You can also take a look at Category Theory for Programmers 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