dartz
Functional Programming in Dart. Purify your Dart code using efficient immutable data structures, monads, lenses and other FP tools.
0.10.1
518K downloads/mo
#506 most downloaded on pub.dev
spebbe/dartz
What this package is like to depend on
Last release 5 years ago
no release in 18 months
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 66 of 66 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
75 releases · first in 2016
0 releases in the last 12 months
see the full history below
Release timeline
75 releases · Feb 2016 to Dec 2021Releases
latest 60 of 75-
0.10.103 Dec 2021Release notes
Open source →- ALL additions in 0.10.1 were written by @cranst0n! (PRs #88, #91 and #93)
- Added bimap, cond and ensure to Either
- Added when and unless to Option
- Added head, tail, init, last and append to Tuple2 through Tuple20
- Added traverseTask and sequenceTask to Option, Either and IList
- Added a whole slew of useful combinators to Task (See #93 for details)
-
0.10.013 Aug 2021 -
0.10.0-nullsafety.209 May 2021 pre-release -
0.10.0-nullsafety.110 Feb 2021 pre-releaseRelease notes
Open source →- Corrected signature of
optionOftoA? => Option<A>(issue #74, thanks @rich-j) - Added
toNullable()toOption(issue #74, thanks @apiep)
- Corrected signature of
-
0.10.0-nullsafety.007 Jan 2021 pre-releaseRelease notes
Open source →- Basic null safety support
- Requires Dart >= 2.12. Dart 1 is no longer supported at all.
-
0.9.204 Oct 2020Release notes
Open source →- mapXX and liftXX arities up to 20 on Option, Either and Free, courtesy of @cranst0n!
-
0.9.106 May 2020 -
0.9.026 Apr 2020Release notes
Open source →- Type class hierarchy reworked to be implemented rather than extended
- Removed monad transformers and some other stuff that can't be made type safe on Dart 2
- IList and Option has some const support
- Improved Dart 2 support
- Conveyor works on Dart 2!
- TupleXX and FunctionXX arities up to 20, courtesy of @modulovalue!
- IVector#indexOf
-
0.9.0-dev.612 Feb 2020 pre-releaseNothing published for this version
-
0.9.0-dev.525 Nov 2019 pre-releaseNothing published for this version
-
0.9.0-dev.419 Nov 2019 pre-release -
0.9.0-dev.318 Nov 2019 pre-releaseNothing published for this version
-
0.9.0-dev.218 Nov 2019 pre-releaseNothing published for this version
-
0.9.0-dev.108 Nov 2019 pre-releaseNothing published for this version
-
0.8.925 Nov 2019 -
0.8.805 Nov 2019 -
0.8.702 Sep 2019Release notes
Open source →- Refined types on Task, for better Dart 2 support (issue #24, thanks @rlavolee)
-
0.8.620 Aug 2019Release notes
Open source →- Added asCons() and option to IList (issue #17, thanks @modulovalue)
- Added isEmpty to AVLTree, IList, IMap, ISet and IVector (issue #23, thanks @rich-j)
- Compatibility with Dart 2.4.0 (issue #18, thanks @xsobolx)
-
0.8.517 Jun 2019Release notes
Open source →- Compatibility with Dart > 2.3.2 through workaround for https://github.com/dart-lang/sdk/issues/35097
- Thanks @modulovalue and @CatherineThompson for reporting!
- Direct
valueaccess on Some, Left and Right- Thanks @modulovalue for PR #15!
- Compatibility with Dart > 2.3.2 through workaround for https://github.com/dart-lang/sdk/issues/35097
-
0.8.425 Apr 2019 -
0.8.316 Dec 2018Release notes
Open source →- Preliminary Dart 2.2.0 compatibility
- 'cast' now generates "implicit" checks, causing dart2js to produce dramatically more efficient js code in some cases
-
0.8.210 Oct 2018Release notes
Open source →- Added isLeft, isRight and swap to Either
- Fixed some type issues on 2.1.0-dev.6.0
-
0.8.130 Sep 2018Release notes
Open source →- Massive performance improvements for many operations on IMap on Dart 2
- Inserts and lookups are now almost as fast on Dart 2 as on Dart 1
- Fixed some tests that passed for the wrong reason...
- Massive performance improvements for many operations on IMap on Dart 2
-
0.8.019 Aug 2018Release notes
Open source →- Bridge release with few breaking changes, full Dart 1 support and rudimentary Dart 2 support
- (0.9.0 will probably be Dart 2 only and have lots of breaking changes)
- Basic things work correctly on Dart 2 -- many other things don't...
- Started work on removing type class hierarchy, with hard coded replacements such as IList#traverseFuture being added
- Temporarily replaced propcheck with quick'n'dirty minimal replacement, while it is being updated for Dart 2
- Disabled some broken monad transformer tests, since they probably won't survive the move to Dart 2
-
0.7.515 Apr 2018Release notes
Open source →- IMap.fromPairs and IHashMap.fromPairs, for constructing maps from sequences of Tuple2
- IList.flattenIList and IVector.flattenIVector for type safe flattening of IList/IVector
- IList.flattenOption and IVector.flattenOption for type safe flattening/uniting IList/IVector of Option
-
0.7.408 Mar 2018 -
0.7.328 Feb 2018Release notes
Open source →- More useful types for eitherM()
- Declared argument type F of '>>' on MonadOps as covariant, enabling better specialization in implementations
- Specialized types for replace on StateT
- Fixed buggy foldLeftWithIndex/foldRightWithIndex on IVector
-
0.7.221 Jan 2018Release notes
Open source →- Added curried versions of several Lens members (setC, modifyC and so on)
- Improved typing for generic methods on Evaluation
- More type information retained for filter operations on MonadPlus instances
- Added custom filter operation on Either
- Introduced 'where' as an alias to filter where applicable
-
0.7.119 Nov 2017Release notes
Open source →- Added foldLeftWithIndexBetween and foldRightWithIndexBetween to IVector
- Added cata and order to IMap
- Exposed step operation on Free, enabling manual bind reassociation for now
-
0.7.021 Oct 2017Release notes
Open source →- Preparations for Dart 2.0
- Improved type safety for IMap and ISet
- Reworked and/or removed functions/constructors that implicitly assumed that keys/members implemented Comparable
- Added replacement helpers for constructors that couldn't be saved
- All dependencies on Comparable are now explicit and enforced by the type system
- IMap additions:
- getKey
- mapKV
- traverseKV
- traverseKV_
-
0.6.318 Sep 2017Release notes
Open source →- Added:
- foldLeftBetween and foldRightBetween operations to AVLTree
- foldLeftBetween, foldRightBetween and subSetBetween operations to ISet
- regexp pipe to Text utilities
- IList.generate factory constructor
- ifM combinator and some type refinements to Free
- Eq instances for Iterators
- More memory efficient and faster equality checks for IMap, IHashMap, AVLTree, ISet and IVector
- New, slightly more advanced example for streaming IO
- Added:
-
0.6.231 Aug 2017 -
0.6.130 Aug 2017Release notes
Open source →- Way more efficient file reads using Free IO and Conveyor
- Improved typing for Applicative liftX and mapX, with specialized overrides on Option and Either
- Added optionOf utility, for safely wrapping a possibly null value in Option
- Added forEach operation to dartz_unsafe, for performing side effects on Foldables
- Added forEach operations to Option, Either, IList, IVector, ISet, IMap, IHashMap and AVLTree
- Various small tweaks, additions and bug fixes
-
0.6.002 Jul 2017Release notes
Open source →- Updated sdk requirement to >= 1.24.0
- Now uses real (non-commented) generic method syntax
- Takes advantage of improvements in strong mode type inference
- Various workarounds for remaining strong mode quirks
- Updated sdk requirement to >= 1.24.0
-
0.5.730 Apr 2017Release notes
Open source →- Added efficient operations related to lower/upper bounds to IMap:
- min
- max
- minKey
- maxKey
- minGreaterThan
- maxLessThan
- foldLeftKVBetween
- foldRightKVBetween
- hashCode consistent with '==' where overridden
- Added efficient operations related to lower/upper bounds to IMap:
-
0.5.619 Apr 2017Release notes
Open source →- 'Gather' IO primitive for parallelizing IO operations
- Refined types for map2 to map6 on Free and IO monads
- Improvements to type safety/inference for Free and IO
-
0.5.519 Mar 2017Release notes
Open source →- Slightly less efficient, but more correct/safe traverse for IList
- Better type inference for Either and Future Monad instance helpers
-
0.5.405 Mar 2017Release notes
Open source →- Added modifyE to EvaluationMonad, for state updates that can fail
- Either, Option, Evaluation, State, StateT and Free:
- Tightened types of various derived operations, such as flatMap, andThen and <<
-
0.5.319 Feb 2017Release notes
Open source →- Reworked Free to be stack safe in more cases
- Implementations more similar to the ones in scalaz and cats
- Still a work in progress, but works for basic use cases
- Added TraversableMonad instance for Function0
- Reworked Free to be stack safe in more cases
-
0.5.229 Jan 2017Release notes
Open source →- Improved performance of set operation on IMap and IVector
- Added setIfPresent to IMap
- Added setIfPresent, removeFirst, dropFirst, removeLast and dropLast to IVector
- Added window and windowAll to Pipe and Conveyor
-
0.5.115 Jan 2017Release notes
Open source →- Added experimental Lens implementation and example!
- Added IMap.fromIterables
- Slightly faster get operations on IMap and AVLTree
-
0.5.007 Jan 2017Release notes
Open source →- Swallowed a chunk of purist pride:
- Added toIterable and iterator operations to Option, Either and all immutable collections
- Added iterables/iterators for pairs, keys and values to IMap and IHashMap
- Swallowed a chunk of purist pride:
-
0.4.503 Jan 2017Release notes
Open source →- Added minSi and maxSi to Order
- Added reverse to TraversableMonadPlus
- Added zip to IList
-
0.4.411 Dec 2016Release notes
Open source →- Tightened types of some overrides and helpers
- Added free IO primitive Delay
- Added scanWhile to Pipe
- Added foldWhile to Conveyor
- Added repeatEval and repeatEval_ to Source
-
0.4.313 Nov 2016Release notes
Open source →- Added uniteOption to Pipe
- Added chunk to Pipe and Conveyor
- Square bracket syntax as alternative to get(K key) on IMap and IHashMap
- Got rid of all implicit down casts by disabling them in the analysis options
- Cleaner types on Pipe
-
0.4.230 Oct 2016Release notes
Open source →- Aggressive internal optimizations in IList, for speed and memory efficiency
- Much faster map and bind/flatMap IList operations, especially on V8
- Slightly faster map operations on IMap and IVector
-
0.4.123 Oct 2016Release notes
Open source →- Helpers for composing Free algebras and interpreters through coproduct nesting
- Free composition example
- Moved Free IO primitives into IOOps, for easy composition with other Free algebras
- emptyMap and singletonMap convenience functions for IMap
- Some more convenience functions for Conveyor
-
0.4.007 Oct 2016Release notes
Open source →- New mini library, dartz_streaming!
- Moved Conveyor and friends to dartz_streaming
- Added lots of stream combinators for general use, IO and text processing
- Added Execute IO primitive for running external commands
- Beefed up mock IO interpreter
-
0.3.602 Oct 2016Release notes
Open source →- foldLeftWithIndex and foldRightWithIndex on Foldable/FoldableOps
- Specialized foldLeftWithIndex/foldRightWithIndex implementations on IVector
- Source.fromStream (Conveyor) now takes a Stream thunk instead of a direct Stream
- Minor cleanups in streaming IO example
-
0.3.525 Sep 2016Release notes
Open source →- Improved resource safety of Conveyor primitives
- repeatUntilExhausted, repeatNonEmpty, intsFrom, window2 and window2all operations for Conveyor
- Corrections for stronger strong mode
-
0.3.410 Sep 2016Release notes
Open source →- repeatNotEmpty operation for Conveyor
- Opaque FileRefs in Free IO
- Proper type parameterization for derived Tuple Semigroups and Monoids
-
0.3.304 Sep 2016Release notes
Open source →- Tee construct for combining Conveyors
- tee, zip, zipWith, interleave, intersperse and constant operations on Conveyor
- through and to operations for effectful sinks and channels on Conveyor
- Moved Free IO algebra back into library
- Extracted side effecting IO interpreter into "unsafe" mini library
-
0.3.227 Aug 2016Release notes
Open source →- Updated for the improvements to strong mode in Dart 1.19.0
- Fully mockable IO type and other cleanups in examples
-
0.3.120 Aug 2016Release notes
Open source →- Renamed Conveyor primitives (await -> consume, emit -> produce)
- Added identity, drop and dropWhile operations to Pipe and Conveyor
- Added Source#fromStream for driving Conveyors from Dart Streams
- Helpers for creating anonymous Eq instances
- ObjectEq Eq instance for comparing Objects for equality using '=='
- Beefed up mock IO interpreter in Free IO example
- Funner, faster and longer streaming IO example
-
0.3.013 Aug 2016Release notes
Open source →- Conveyor, an experimental implementation of functional streams, based on work by Chiusano/Bjarnason (chapter 15 in FPIS)
- Clarified Free IO example
- Added Streaming IO example, based on Free IO and Conveyor
-
0.2.510 Aug 2016Release notes
Open source →- MonadCatch type class
- Simplistic Task implementation, with MonadCatch instance
-
0.2.403 Jul 2016 -
0.2.303 Jul 2016Release notes
Open source →- New TraversableMonadPlus type class, with partition operation
- TraversableMonadPlus instances for IList, List, IVector and Option
- prependElement and appendElement operations for ApplicativePlus
- better type inference for applicative mapX operations on Option and Either
- uncons, unconsO and sort operations for IList
-
0.2.206 Jun 2016 -
0.2.105 Jun 2016Release notes
Open source →- Added two examples
- Foldable instance for ISet
- liftOption operation for Evaluation
- foldMapM operation for Foldable
- More type annotations and convenience functions