λ v5.4.0 Release Notes

Release Date: 2021-09-17 // 10 months ago
  • 🔄 Changed

    • Absent folds short-circuit on the first nothing()
    • 👍 EitherMatcher#isLeftThat/isRightThat support contravariant bounds on their delegates

    ➕ Added

    • IterateT#runStep, a method used to run a single step of an IterateT without the contractual guarantee of emitting a value or reaching the end
    • These#fromMaybes :: Maybe a -> Maybe b -> Maybe (These a b)
    • EitherMatcher#isLeftOf/isRightOf for asserting equality

    🛠 Fixed

    • WriterT now keeps an immediate reference to the embedded monad's pure

Previous changes from v5.3.0

  • 🔄 Changed

    • IterateT#unfold now only computes a single Pure for the given input
    • ReaderT#fmap and StateT#fmap avoid unnecessary calls to pure
    • MaybeT implements MonadError

    ➕ Added

    • $, function application represented as a higher-order Fn2
    • Fn1#withSelf, a static method for constructing a self-referencing Fn1
    • HNil/SingletonHList/TupleX#snoc, a method to add a new last element (append to a tuple)
    • Tuple2-8#init, for populating a TupleN with all but the last element

    🛠 Fixed

    • IterateT#trampolineM now yields and stages all recursive result values, rather than prematurely terminating on the first termination result
    • IterateT#flatMap is now stack-safe regardless of how many consecutive empty IterateTs are returned and regardless of whether the monad is strict or lazy or internally trampolined