All Versions
33
Latest Version
Avg Release Cycle
76 days
Latest Release
1728 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v5.4.0 Changes
September 17, 2021🔄 Changed
Absentfolds short-circuit on the firstnothing()- 👍
EitherMatcher#isLeftThat/isRightThatsupport 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 endThese#fromMaybes :: Maybe a -> Maybe b -> Maybe (These a b)EitherMatcher#isLeftOf/isRightOffor asserting equality
🛠 Fixed
WriterTnow keeps an immediate reference to the embedded monad'spure
-
v5.3.0 Changes
December 07, 2020🔄 Changed
IterateT#unfoldnow only computes a singlePurefor the given inputReaderT#fmapandStateT#fmapavoid unnecessary calls topureMaybeTimplementsMonadError
➕ Added
$, function application represented as a higher-orderFn2Fn1#withSelf, a static method for constructing a self-referencingFn1HNil/SingletonHList/TupleX#snoc, a method to add a new last element (append to a tuple)Tuple2-8#init, for populating aTupleNwith all but the last element
🛠 Fixed
IterateT#trampolineMnow yields and stages all recursive result values, rather than prematurely terminating on the first termination resultIterateT#flatMapis now stack-safe regardless of how many consecutive emptyIterateTs are returned and regardless of whether the monad is strict or lazy or internally trampolined
-
v5.2.0 Changes
February 08, 2020🔄 Changed
HList#consstatic factory method auto-promotes to specializedHListif there is oneEitherTgains aMonadErrorinstance
➕ Added
- 🔀
MergeHMaps, aMonoidthat mergesHMaps by merging the values via key-specifiedSemigroups Id#idoverload that accepts an argument and returns itMaybeT#or, choose the firstMaybeTthat represents an effect aroundjusta valueMaybeT#filter, filter aMaybeinside an effectStateMatcher, StateTMatcher, WriterTMatcherReaderT#and, category composition betweenReaderTinstances:(a -> m b) -> (b -> m c) -> (a -> m c)IterateT,ListTdone rightComparison, a type-safe sum ofLT,EQ, andGTorderingsCompare, a function taking aComparatorand returning aComparison- ✅
Min/Max/...Withvariants for inequality testing with aComparator
-
v5.1.0 Changes
October 13, 2019🔄 Changed
- 👍 All monad transformers that can support composable parallelism do support it
➕ Added
Writer, the writer monadEndoK, a monoid formed under endomorphism for any monadAutoBracket, a specialized form ofBracketforAutoCloseablethat closes the resource during cleanup
🛠 Fixed
SafeT#zipis now stack-safe regardless of the underlying monad'szipimplementation
🗄 Deprecated
Force, in favor if traversing into anIOand explicitly running it
-
v5.0.0 Changes
September 18, 2019🔄 Changed
- Breaking Change:
MonadTis now witnessed by a parameter for better subtyping, and no longer requires a commonruninterface; eachrunmethod is nowrunXXXT(), whereXXXis the name of the transformer in question - Breaking Change:
Applicative#zipand derivatives evaluate from left to right now across the board. - Breaking Change:
testsupport.EquatableMreplaced withEquivalence Alternow merely requires anFn1instead of an explicitEffectIOnow internally trampolines all forms of composition, includinglazyZip; sequencing very large iterables ofIOwill work, if you have the heap, and retain parallelization inflection points
➕ Added
- 0️⃣
MonadRec, monads that support a stack-safetrampolineMmethod 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 forMonadsMonadReaderandMonadWriter, general interfaces for reading from an environment and accumulating resultsSafeT, a stack-safe monad transformer for anyMonadRecReaderT, the transformer for the reader monadWriterT, a monad transformer for an accumulation and a valueStateT, theStatemonad transformerLift, an existentially-quantified lifting function for someMonadBasetypeIO#interruptible, for wrapping anIOin a thread interruption check- 🔒
IO#monitorSync, for wrapping anIOin asynchronizedblock on a given lock object - 📌
IO#pin, for pinning anIOto anExecutorwithout yet executing it IO#fuse, for fusing the fork opportunities of a givenIOinto a single linearizedIOIO#memoize, for memoizing anIOby caching its first successful resultUntil, for repeatedly executing anIOuntil its result matches a predicate- 0️⃣
Optic#andThen,Optic#compose, and other defaults added Prism#andThen,Prism#composebegets anotherPrismPrism#fromPartialpublic interfacesTuple2-8#fromIterable, for populating aTupleNwith the firstNelements of anIterableFn2#curry, for converting anFn1<Tuple2<A,B>,C>to anFn2<A,B,C>- ✅
EquivalenceTrait, a traitorTraitto make it easier to test properties of type-classes with a separate equivalence relation
🗄 Deprecated
Peek,Peek2,Maybe#peek, andEither#peekin favor of explicitly matching intoIOand running itForce, in favor if traversing into anIOand explicitly running itIO#exceptionallyin favor ofIO#catchError(fromMonadError)
- Breaking Change:
-
v4.0.0 Changes
May 21, 2019🔄 Changed
- Breaking Change:
IOis now sealed and moved to its own package. Most previous constructions using the static factory methods should continue to work (by simply targetingSuppliernow instead of an anonymousIO), but some might need to be reworked, and subtyping is obviously no longer supported. - Breaking Change: Breaking all dependency on
java.util.functiontypes across the board. AllFn*types target methods now support throwingThrowable;applyis now defaulted and will simply bypass javac to throw checked exceptions as if they were unchecked. AllCheckedvariants have been eliminated as a consequence, as they are no longer necessary. Also, straggler functions likePartial2/3that only existed to aid in partial application of non-curried functions are now superfluous, and have also been eliminated. - Breaking Change:
FoldRightnow requiresLazyas part of its interface to support short-circuiting operations - Breaking Change: Eliminated all raw types and java11 warnings. This required using capture in unification parameters for Functor and friends, so nearly every functor's type-signature changed.
- Breaking Change:
Strongis now calledCartesianto better reflect the type of strength - Breaking Change: new Optic type hierarchy more faithfully encodes profunctor constraints on optics, new
Optictype is now the supertype ofLensandIso, andlenspackage has been moved tooptics - Breaking Change:
TryandEitherno longer preserveThrowabletype since it was inherently not type-safe anyway; Try is therefore no longer aBifunctor, andorThrowcan be used to declare checked exceptions that could be caught by corresponding catch blocks IOis now stack-safe, regardless of whether the composition nests linearly or recursively
➕ Added
- 👍
Lazy, a monad supporting stack-safe lazy evaluation LazyRec, a function for writing stack-safe recursive algorithms embedded inLazyApplicative#lazyZip, for zipping two applicatives in a way that might not require evaluation of one applicativeMonadT, a general interface representing monad transformersMaybeT, a monad transformer forMaybeEitherT, a monad transformer forEitherIdentityT, a monad transformer forIdentityLazyT, a monad transformer forLazyEndo, a monoid formed byFn1under compositionState, the stateMonad- 👍
Downcast, a function supporting unchecked down-casting Cocartesian, profunctorial strength in cocartesian coproduct termsPrism, anOpticthat is nearly anIsobut can fail in one direction- 👍
Market,Tagged, profunctors supporting optics Refor viewing anOpticin one direction reliablyPrefor viewing at most one value from anOpticin one directionSideEffect, for representing side-effects runnable byIOIO#safe, mapping anIO<A>to anIO<Either<Throwable, A>>that will never throwIO#ensuring, likefinallysemantics forIOsIO#throwing, for producing anIO<A>that will throw a givenThrowablewhen executedBracket, for bracketing anIOoperation with a mapping operation and a cleanup operation
- Breaking Change:
-
v3.3.0 Changes
February 20, 2019➕ Added
- 🔀
MergeMaps, aMonoidonMapformed byMap#merge CheckedEffectis now aCheckedFn1CheckedSupplieris now aCheckedFn1CheckedFn1now overrides all possible methods with covariant return typeMapLens#asCopyhas overload taking copy functionMapLens#valueAthas overload taking copy functionSortWithfor sorting anIterablegiven aComparatorover its elementsIO#externallyManaged, for supplying anIOwith externally-managed futures- ✅ test jar is now published
Monad#joinstatic alias forflatMap(id())Effect#effectstatic factory method takingFn1IO#unsafePerformAsyncIOoverloads for runningIOs asynchronouslyIOs automatically encode parallelism in compositionIO#exceptionallyfor recovering from failure duringIOoperationOptic, a generic supertype for all profunctor optics
🛠 Fixed
- issue where certain ways to compose
Effects unintentionally nullified the effect
✂ Removed
- 🚀
AddAllsemigroup, deprecated in previous release - 🚀 Dyadic
Either#flatMap(), deprecated in previous release
- 🔀
-
v3.2.0 Changes
December 08, 2018🔄 Changed
- Breaking Change:
DifferenceandIntersectionno longer instances ofSemigroupand moved tofunctions.builtin.fn2package - Breaking Change:
Absentmoved tosemigroup.builtinpackage - Breaking Change:
Effect#accept()is now the required method to implement in the functional interface - Breaking Change:
Fn0#apply()is now the required method to implement in the functional interface - Breaking Change:
GTBy,GT,LTBy,LT,GTEBy,GTE,LTEBy, andLTEtake the right-hand side first for more intuitive partial application - Breaking Change:
Effectnow returns anIO RightAnyoverload returnsMonoid- monoids now all fold with respect to
foldMap - monoid folding now implicitly starts with the identity, regardless of iterable population
Concatmonoid can now fold infinite iterables- 👍 all
Function<? super XXX, Boolean>are nowFunction<? super XXX, ? extends Boolean>for better compatibility Either#divergereturns aChoice3Maybeis now aCoProduct2ofUnitandAFn0now additionally implementsCallableCheckedRunnableis anIO<Unit>
➕ Added
Predicate#predicatestatic factory methodProduct2-8left/right rotation methodsTuple2-8specializations of left/right product rotationCheckedEffect, anEffectvariant that can throw checked exceptionsCheckedFn1#checked, convenience static factory method to aid inference- 🔊
LiftA3-8, higher-arity analogs toLiftA2 Alter, for applying anEffectto an input and returning it, presumably alteredClamp, for clamping a value between two boundsBetween, for determining if a value is in a closed intervalStrong, profunctor strengthIOmonadRunAllsemigroup and monoid instance forIO<A>
🗄 Deprecated
AddAllsemigroup, in favor of the monoid that no longer mutates any argument- Dyadic
Either#flatMap(), in favor ofEither#match
- Breaking Change:
-
v3.1.0 Changes
July 17, 2018➕ Added
Fn3-8static factory overloads to aid in coercing lambdas- ➕ Adding composition guarantees to
LensLike CmpEqBy,CmpEq,GTBy,GT,LTBy,LT,GTEBy,GTE,LTEBy, andLTEinequality checksMinBy,MaxBy,Min, andMaxsemigroupsProduct2-8interfaces, representing general product typesUnion, a monoid that behaves like a lazy set union onIterablesDifference, a semigroup that behaves like a partially lazy set difference onIterablesLambdaMap, extension point forj.u.Map, similar toLambdaIterableSequence#sequenceoverloads forj.u.Mapthat traverse via intermediateLambdaMapinstancesIntersection, a semigroup that behaves like a lazy set intersection onIterablesFn0, a function fromUnitto some valueFn1#thunk, producing anFn0Absent, a monoid overMaybethat is absence biasedRateLimit, a function that iterates elements from anIterableaccording to some rate limitTry#withResources,Try's expression analog to Java 7's try-with-resources statementOccurrences, for counting the occurrences of the members of anIterableEffect, anFn0returningUNITNoop, a no-opEffectFn1#widen, add an ignored argument to the beginning of any function to raise its arity by one
🔄 Changed
Tuple2-8now implementProduct2-8Intonow acceptsMap.EntryInto3-8now accept a product of the same cardinality, instead of requiring a tupleCoProduct2-8#projectnow return generalized productsChoice2-8#projectreturn tuplesliftA2receives more parameters to aid inference- 👍
Compose#getComposenow supports inference
✂ Removed
- 🚀
MapLens#mappingValues, deprecated in a prior release - 🚀
CollectionLens#asSet, deprecated in a prior release - 🚀
CollectionLens#asStream, deprecated in a prior release
-
v3.0.3 Changes
May 27, 2018➕ Added
Lens#toIso, for converting a lens to an isoHMap#hMapoverloads up to 8 bindings deepSchema, schemas for extracting multiple values fromHMaps by aggregatingTypeSafeKeys
🛠 Fixed
- Deforested iterables execute in intended nesting order, where essential