All Versions
33
Latest Version
Avg Release Cycle
76 days
Latest Release
924 days ago

Changelog History
Page 2

  • v3.0.2 Changes

    May 21, 2018

    ➕ Added

    • IterableLens#mapping, an Iso that maps values

    🔄 Changed

    • 0️⃣ TypeSafeKey.Simple now has a default #apply implementation

    🛠 Fixed

    • mapped TypeSafeKey instances can be used for initial put in an HMap, and the base key can be used to retrieve them
    • 🔀 Merged pull request fixing issue storing values at mapped TypeSafeKey in singletonHMap
  • v3.0.1 Changes

    May 13, 2018

    🔄 Changed

    • ToMap accepts an Iterable covariant in Map.Entry
    • RecursiveResult#invert is also a RecursiveResult
    • First/And/Or monoids all utilize short-circuiting
    • Monoid#foldLeft/foldRight delegate to Monoid#reduceLeft/reduceRight, respectively

    ➕ Added

    • Upcast for safely casting up a type hierarchy
    • SetLens, lenses operating on Sets
    • ToArray, for converting Iterable<A> to A[]
  • v3.0.0 Changes

    May 04, 2018

    🔄 Changed

    • Breaking Change: Sequence now has two more type parameters to aid in inference
    • Breaking Change: Traversable#traverse now has three more type parameters to aid in inference
    • Breaking Change: Monad#zip now forces m a -> b before m a in default Applicative#zip implementation; this is only breaking for types that are sensitive to computation order (the resulting values are the same)
    • Breaking Change: TypeSafeKey is now dually parametric (single parameter analog is preserved in TypeSafeKey.Simple)
    • Bifunctor is now a BoundedBifunctor where both parameter upper bounds are Object
    • Peek2 now accepts the more general BoundedBifunctor
    • 👍 Identity, Compose, and Const functors all have better toString implementations
    • 👍 Into3-8 now supports functions with parameter variance
    • HListLens#tail is now covariant in Tail parameter
    • More functions now automatically deforest nested calls (concat cons, cycle, distinct, drop, dropwhile, filter, map, reverse, snoc, take, takewhile, tail)
    • 👍 Flatten calls Iterator#hasNext less aggressively, allowing for better laziness
    • Lens subtypes LensLike
    • View/Set/Over now only require LensLike
    • HMap#keys now returns a Set
    • HMap#values now returns a Collection
    • Unfoldr is now lazier, deferring all computations until hasNext/next calls
    • Present is now a singleton

    ➕ Added

    • BoundedBifunctor, a Bifunctor super type that offers upper bounds for both parameters
    • Try, a Monad representing an expression-like analog of try/catch/finally
    • CheckedRunnable, the Runnable counterpart to CheckedSupplier that can throw checked exceptions
    • Unit, the lambda analog to Void, except actually inhabited by a singleton instance
    • Kleisli, the abstract representation of a Kleisli arrow (Monad#flatMap) as an Fn1
    • These, a CoProduct3 of A, B, or Tuple2<A,B>
    • Span, for splitting an Iterable into contiguous elements matching a predicate
    • MagnetizeBy and Magnetize, for grouping elements by pairwise predicate tests
    • Both, for dually applying two functions and producing a Tuple2 of their results
    • Lens#both, for dually focusing with two lenses at once
    • IfThenElse, an expression form for if statements
    • CheckedRunnable and CheckedSupplier conversion and convenience methods
    • LensLike, common capabilities that make a type usable as if it were a Lens
    • Iso, isomorphisms between two types (invertible functions that are also lenses)
    • Exchange, a Profunctor that can extract the morphisms from an Iso
    • HMapLens, lenses focusing on HMap
    • MapLens#mappingValues(Iso), a lawful lens that maps the values of a j.u.Map
    • Under, the inverse of Over for Iso
    • 👍 TypeSafeKey is an Iso and supports mapping
    • TypeSafeKey.Simple, the single parameter version of TypeSafeKey
    • Either#trying overloads that accept CheckedRunnable

    🗄 Deprecated

    • 🗄 MapLens#mappingValues(Function) is now deprecated in favor of the overload that takes an Iso
  • v2.2.0

    April 19, 2018
  • v2.1.1 Changes

    January 17, 2018

    🔄 Changed

    • Breaking Change: Moved Trampoline and RecursiveResult to better package
  • v2.1.0 Changes

    January 14, 2018

    🔄 Changed

    • Breaking Change: CollectionLens#asSet is now lawful and preserves new incoming values in the update set
    • Breaking Change: IterableLens#head is now a Lens.Simple<Iterable<A>, Maybe<A>> and is lawful
    • Breaking Change: ListLens#elementAt is now a Lens.Simple<List<X>, Maybe<X>> supporting defensive copies
    • Breaking Change: MapLens#valueAt is now a Lens.Simple<Map<K,V>, Maybe<V>> supporting defensive copies
    • MapLens#keys now uses defensive copies and does not alter the focused on map
    • MapLens#values now uses defensive copies and does not alter the focused on map
    • MapLens#inverted now uses defensive copies and does not alter the focused on map
    • HListLens#head is now covariant in the tail of both S and T
    • Predicate#contraMap is now covariant in its return type
    • BiPredicate#contraMap and BiPredicate#diMapL are now both covariant in their return types

    ➕ Added

    • Fn3#fn3 and Fn4#fn4 static factory methods
    • Fn5 through Fn8
    • Tuple5#into
    • Tuple6 through Tuple8
    • CoProduct6 through CoProduct8 and Choice6 through Choice8
    • CoProduct5#diverge and Choice5#diverge
    • Into3 through Into8, for applying a Tuple* to an Fn*
    • Times, for successively accumulating a result by iterating a function over a value some number of times
    • Slide, for "sliding" a window of some number of elements across an Iterable
    • 👍 Either#filter overload supporting a function from R to L in the failing predicate case
    • CollectionLens#asSet(Function), a proper analog of CollectionLens#asSet() that uses defensive copies
    • CollectionLens#asStream(Function), a proper analog of CollectionLens#asStream() that uses defensive copies
    • 📚 Explicitly calling attention to all unlawful lenses in their documentation
    • Peek and Peek2, for "peeking" at the value contained inside any given Functor or Bifunctor with given side-effects
    • Trampoline and RecursiveResult for modeling primitive tail-recursive functions that can be trampolined

    ✂ Removed

    • 🚀 Either#toOptional, deprecated in previous release
    • 🚀 Either#fromOptional, deprecated in previous release
    • 🚀 sequence overloads supporting Optional, deprecated in previous release
    • 🚀 OptionalLens, deprecated in previous release
    • 🚀 TraversableIterable, deprecated in previous release
    • 🚀 Traversables, deprecated in previous release

    🗄 Deprecated

    • CollectionLens#asSet() in favor of CollectionLens#asSet(Function)
    • CollectionLens#asStream() in favor of CollectionLens#asStream(Function)
  • v2.0.0 Changes

    November 13, 2017

    🔄 Changed

    • Breaking Change: java.util.Optional replaced with Maybe across the board
    • Profunctor#diMap/L/R parameters allow variance
    • 🔀 Either#toOptional no longer allows null values in the right side, and is now in sync with CoProduct#projectB
    • Unfoldr allows variance on input

    🛠 Fixed

    • CoProductN#embed no longer eagerly invokes functions
    • PrependAll now only creates O(1) Iterables instead of O(3n + 1)

    ➕ Added

    • Monad arrives. The following Applicatives are now also Monad:
      • Lens
      • Const
      • Tuple*
      • Choice*
      • Identity
      • Either
      • Fn*
      • LambdaIterable
      • Maybe
      • SingletonHList
    • Force, for forcing iteration of an Iterable to perform any side-effects
    • Snoc, for lazily appending an element to the end of an Iterable
    • Coalesce, for folding an Iterable<Either<L, R>> into an Either<Iterable<L>, Iterable<R>>
    • And, Or, and Xor all gain BiPredicate<Boolean, Boolean> properties
    • 👍 LambdaIterable, an adapter Iterable that support lambda types
    • Maybe, lambda's analog of java.util.Optional conforming to all the lambda types
    • Contravariant, an interface representing functors that map contravariantly over their parameters
    • Profunctor extends Contravariant
    • Tails, for iterating all the tail element subsequences of an Iterable
    • Inits, for iterating all the initial element subsequences of an Iterable
    • Init, for iterating all but the last element of an Iterable
    • CatMaybes, for unwrapping the present values in an Iterable<Maybe<A>> to produce an Iterable<A>

    ✂ Removed

    • 🚀 Fn1#then(Function<? super B, ? extends C>), deprecated in previous release
    • 🚀 Fn1#adapt(Function<A, B> function), deprecated in previous release
    • 🚀 Fn2#adapt(BiFunction<A, B, C> biFunction), deprecated in previous release

    🗄 Deprecated

    • Traversables and all methods therein, in favor of either LambdaIterable or Maybe
    • TraversableOptional in favor of Maybe
    • TraversableIterable in favor of LambdaIterable
    • 👍 Sequence overloads supporting Optional in favor of converting Optional to Maybe and then sequencing
    • Either#toOptional and Either#fromOptional in favor of its Maybe counterparts
  • v1.6.3 Changes

    September 27, 2017

    🔄 Changed

    • Loosening variance on Fn2#fn2 and Fn1#fn1

    🛠 Fixed

    • ConcatenatingIterator bug where deeply nested xs skip elements

    🗄 Deprecated

    • Fn1#then in favor of Fn1#andThen (redundant)
    • Fn1#adapt in favor of Fn1#fn1 (rename)
    • Fn2#adapt in favor of Fn2#fn2 (rename)

    ➕ Added

    • 👍 Fn1#andThen overload to support composition with Bifunction
    • 👍 Fn1#compose overload to support composition with Bifunction and Fn2
    • LiftA2 to lift and apply a Bifunction to two Applicatives
    • Flatten to lazily flatten nested Iterable<Iterable<A>>s to Iterable<A>
    • Replicate, short-hand composition of take and repeat
    • Distinct to produce an Iterable of distinct values in another Iterable
    • Sort and SortBy for eagerly, monolithically sorting Iterables and producing Lists
    • IterableLens, general lenses over Iterable
    • Xor, a monoid representing logical exclusive-or
  • v1.6.2 Changes

    August 20, 2017

    🔄 Changed

    • ⚠ Removing need for various suppressed unchecked warnings in ChoiceN types
    • HList abstract super type loses both unnecessary parameters

    🛠 Fixed

    • ClassCastException BiPredicate.flip

    ➕ Added

    • Uncons, for destructuring an Iterable into its head and tail
    • Compose semigroup and monoid formed over CompletableFuture
    • Monoid and Semigroup both preserve type specificity through flip calls
  • v1.6.1 Changes

    June 17, 2017

    🔄 Changed

    • Loosening visibility on Traversables methods to public