λ v5.0.0 Release Notes
Release Date: 2019-09-18 // over 4 years ago-
🔄 Changed
- Breaking Change:
MonadT
is now witnessed by a parameter for better subtyping, and no longer requires a commonrun
interface; eachrun
method is nowrunXXXT()
, whereXXX
is the name of the transformer in question - Breaking Change:
Applicative#zip
and derivatives evaluate from left to right now across the board. - Breaking Change:
testsupport.EquatableM
replaced withEquivalence
Alter
now merely requires anFn1
instead of an explicitEffect
IO
now internally trampolines all forms of composition, includinglazyZip
; sequencing very large iterables ofIO
will work, if you have the heap, and retain parallelization inflection points
➕ Added
- 0️⃣
MonadRec
, monads that support a stack-safetrampolineM
method with defaults for all exported monads - 0️⃣
MonadError
, monads that can be thrown to and caught from, with defaults forIO
,Either
,Maybe
, andTry
MonadBase
, an interface representing lifting infrastructure forMonad
sMonadReader
andMonadWriter
, general interfaces for reading from an environment and accumulating resultsSafeT
, a stack-safe monad transformer for anyMonadRec
ReaderT
, the transformer for the reader monadWriterT
, a monad transformer for an accumulation and a valueStateT
, theState
monad transformerLift
, an existentially-quantified lifting function for someMonadBase
typeIO#interruptible
, for wrapping anIO
in a thread interruption check- 🔒
IO#monitorSync
, for wrapping anIO
in asynchronized
block on a given lock object - 📌
IO#pin
, for pinning anIO
to anExecutor
without yet executing it IO#fuse
, for fusing the fork opportunities of a givenIO
into a single linearizedIO
IO#memoize
, for memoizing anIO
by caching its first successful resultUntil
, for repeatedly executing anIO
until its result matches a predicate- 0️⃣
Optic#andThen
,Optic#compose
, and other defaults added Prism#andThen
,Prism#compose
begets anotherPrism
Prism#fromPartial
public interfacesTuple2-8#fromIterable
, for populating aTupleN
with the firstN
elements of anIterable
Fn2#curry
, for converting anFn1<Tuple2<A,B>,C>
to anFn2<A,B,C>
- ✅
EquivalenceTrait
, a traitorTrait
to make it easier to test properties of type-classes with a separate equivalence relation
🗄 Deprecated
Peek
,Peek2
,Maybe#peek
, andEither#peek
in favor of explicitly matching intoIO
and running itForce
, in favor if traversing into anIO
and explicitly running itIO#exceptionally
in favor ofIO#catchError
(fromMonadError
)
- Breaking Change: