All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
Fn3#fn3andFn4#fn4static factory methodsFn5throughFn8Tuple5#intoTuple6throughTuple8
Either#toOptional, deprecated in previous releaseEither#fromOptional, deprecated in previous releasesequenceoverloads supportingOptional, deprecated in previous releaseOptionalLens, deprecated in previous releaseTraversableIterable, deprecated in previous releaseTraversables, deprecated in previous release
2.0.0 - 2017-11-13
- Breaking Change:
java.util.Optionalreplaced withMaybeacross the board Profunctor#diMap/L/Rparameters allow varianceEither#toOptionalno longer allowsnullvalues in the right side, and is now in sync with CoProduct#projectBUnfoldrallows variance on input
CoProductN#embedno longer eagerly invokes functionsPrependAllnow only createsO(1)Iterables instead ofO(3n + 1)
Monadarrives. The followingApplicatives are now alsoMonad:LensConstTuple*Choice*IdentityEitherFn*LambdaIterableMaybeSingletonHList
Force, for forcing iteration of anIterableto perform any side-effectsSnoc, for lazily appending an element to the end of anIterableCoalesce, for folding anIterable<Either<L, R>>into anEither<Iterable<L>, Iterable<R>>And,Or, andXorall gainBiPredicate<Boolean, Boolean>propertiesLambdaIterable, an adapterIterablethat support lambda typesMaybe, lambda's analog ofjava.util.Optionalconforming to all the lambda typesContravariant, an interface representing functors that map contravariantly over their parametersProfunctorextendsContravariantTails, for iterating all the tail element subsequences of anIterableInits, for iterating all the initial element subsequences of anIterableInit, for iterating all but the last element of anIterableCatMaybes, for unwrapping the present values in anIterable<Maybe<A>>to produce anIterable<A>
Fn1#then(Function<? super B, ? extends C>), deprecated in previous releaseFn1#adapt(Function<A, B> function), deprecated in previous releaseFn2#adapt(BiFunction<A, B, C> biFunction), deprecated in previous release
Traversablesand all methods therein, in favor of eitherLambdaIterableorMaybeTraversableOptionalin favor ofMaybeTraversableIterablein favor ofLambdaIterableSequenceoverloads supportingOptionalin favor of convertingOptionaltoMaybeand then sequencingEither#toOptionalandEither#fromOptionalin favor of itsMaybecounterparts
1.6.3 - 2017-09-27
- Loosening variance on
Fn2#fn2andFn1#fn1
ConcatenatingIteratorbug where deeply nestedxsskip elements
Fn1#thenin favor ofFn1#andThen(redundant)Fn1#adaptin favor ofFn1#fn1(rename)Fn2#adaptin favor ofFn2#fn2(rename)
Fn1#andThenoverload to support composition withBifunctionFn1#composeoverload to support composition withBifunctionandFn2LiftA2to lift and apply aBifunctionto twoApplicativesFlattento lazily flatten nestedIterable<Iterable<A>>s toIterable<A>Replicate, short-hand composition oftakeandrepeatDistinctto produce anIterableof distinct values in anotherIterableSortandSortByfor eagerly, monolithically sortingIterables and producingListsIterableLens, general lenses overIterableXor, a monoid representing logical exclusive-or
1.6.2 - 2017-08-20
- Removing need for various suppressed unchecked warnings in
ChoiceNtypes HListabstract super type loses both unnecessary parameters
- ClassCastException
BiPredicate.flip
Uncons, for destructuring anIterableinto its head and tailComposesemigroup and monoid formed overCompletableFutureMonoidandSemigroupboth preserve type specificity throughflipcalls
1.6.1 - 2017-06-17
- Loosening visibility on
Traversablesmethods topublic
1.6.0 - 2017-06-04
Functor,Bifunctor, andProfunctor(as well as all instances) get a unification parameterIdentitysupports value equalityConstsupports value equalitypartitionnow only requires iterables ofCoProudct2CoProductNs receive a unification parameter, which trickles down toEitherandChoicesConcatnow represents a monoid forIterable; previousConcatsemigroup and monoid renamed to more appropriateAddAllLensis now an instance ofProfunctor
Either#invertis pulled up intoCoProduct2and additionally specialized forChoice2CoProductN#embednot, used for negating predicate functionsempty, used to test if an Iterable is emptygroupBy, for folding an Iterable into a Map given a key functionApplicativearrives; all functors gain applicative propertiesTraversablearrives;SingletonHList,Tuple*,Choice*,Either,Identity, andConstgain traversable propertiesTraversableOptionalandTraversableIterablefor adaptingOptionalandIterable, respectively, toTraversablesequencefor wrapping a traversable in an applicative during traversalCompose, an applicative functor that represents type-level functor composition
1.5.6 - 2017-02-11
CoProductN.[a-e]()static factory methods moved to equivalentChoiceNclass. Coproduct interfaces now solely represent methods, no longer have anonymous implementations, and no longer require aFunctorconstraint
ChoiceNtypes, representing concrete coproduct implementations that are alsoFunctorandBiFunctortoMap,last,cons,prependAll,intersperseTuple2/3/4#into, for applying the values in a tuple as positional arguments to a function.FirstandLastmonoids overOptionalAndandOrmonoids overBoolean
1.5.5 - 2016-12-17
- semigroups and monoids moved under
fn2package
CoProductN#project, to project disjoint union types into tuples ofOptionalvaluesCoProductN#converge, to drop the magnitude of a coproduct down by one typetoCollectionandsize
1.5.4 - 2016-11-27
Fn1/2#adaptto switch between lambda andjava.util.functiontypes more easilyeq,head,find, andtailBiPredicateMonoid#foldMapHMap#toMapto go from a heterogeneous map to ajava.util.Map
1.5.3 - 2016-11-06
SemigroupandMonoidEither#invertpartition- Generalized coproducts implemented as
CoProduct2throughCoProduct5 Eitheris now aCoProduct2
1.5.2 - 2016-09-24
Lensstatic factory method renaming
- Heterogeneous list indexes arrive via
Index
1.5.1 - 2016-08-30
- Independent
Lensparameter mapping viamapS,mapT,mapA, andmapB
1.5 - 2016-08-28
- Initial lens support with
LensandSimpleLenstypes andview,set, andoverfunctions ConstandIdentityfunctorsEither#toOptionalHMap#removeandHMap#removeAll
1.4 - 2016-08-08
- All function input values become
java.util.functiontypes, and all function output values remain lambda types, for better compatibility
1.3 - 2016-07-31
Profunctorinheritance hierarchy- Renaming
IdentitytoId Monadic/Dyadic/TriadicFunctionis nowFn1/2/3
HListspecializations support random access lookup
1.2 - 2016-06-27
Tuples moved underHListas specialized subtypes
Either#peekHMap, heterogeneous mapsTuple2is now also aMap.Entry
1.1 - 2016-06-21
- Better interoperability between lambda and
java.util.functiontypes
scanLeftHList, heterogeneous lists- Added up to
Tuple5 Either, specialized coproduct with success/failure semantics
1.0 - 2015-12-29
- Initial implementation of first-class curried functions
all,any,cartesianProduct,cycle,drop,dropWhile,filter,foldLeft,foldRight,inGroupsOf,map,partial2,partial3,reduceLeft,reduceRight,repeat,take,takeWhile,unfoldrMonadic/Dyadic/TriadicFunction,Predicate,Tuple2,Tuple3Functor,BiFunctor,ProFunctor