You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- MonadBase lifting infrastructure separate from MonadT
- MonadT no longer demands run method but merely conjoins
MonadBase to Monad
- added StateT and WriterT
- added MonadReader and MonadWriter
- added Lift type
- EqualityM replaced with Equivalence
Copy file name to clipboardExpand all lines: CHANGELOG.md
+33-15Lines changed: 33 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
5
5
6
6
## [Unreleased]
7
7
### Changed
8
-
-***Breaking Change***: `MonadT` is now witnessed by a parameter for better subtyping
8
+
-***Breaking Change***: `MonadT` is now witnessed by a parameter for better subtyping, and no longer requires a common
9
+
`run` interface
9
10
-***Breaking Change***: `Applicative#zip` and derivatives evaluate from left to right now across the board.
11
+
-***Breaking Change***: `testsupport.EquatableM` replaced with `Equivalence`
10
12
-`Alter` now merely requires an `Fn1` instead of an explicit `Effect`
11
-
-`IO` now internally trampolines all forms of composition, including lazyZip;
12
-
sequencing very large iterables of IO will work, if you have the heap, and
13
+
-`IO` now internally trampolines all forms of composition, including `lazyZip`;
14
+
sequencing very large iterables of `IO` will work, if you have the heap, and
13
15
retain parallelization inflection points
14
16
15
17
### Added
18
+
-`MonadError`, monads that can be thrown to and caught from, with defaults for `IO`, `Either`, `Maybe`, and `Try`
16
19
-`Optic#andThen`, `Optic#compose`, and other defaults added
17
20
-`Prism#andThen`, `Prism#compose` begets another `Prism`
18
21
-`Prism#fromPartial` public interfaces
@@ -22,11 +25,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
22
25
-`IO#monitorSync`, for wrapping an `IO` in a `synchronized` block on a given lock object
23
26
-`IO#pin`, for pinning an `IO` to an `Executor` without yet executing it
24
27
-`IO#fuse`, for fusing the fork opportunities of a given `IO` into a single linearized `IO`
25
-
-`IO#exceptionallyIO`, like `exceptionally` but recover inside another `IO`
26
28
-`IO#memoize`, for memoizing an `IO` by caching its first successful result
27
-
-`MonadError`, monads that can be thrown to and caught from
28
29
-`Tuple2-8#fromIterable`, for populating a `TupleN` with the first `N` elements of an `Iterable`
29
30
-`Fn2#curry`, for converting an `Fn1<Tuple2<A,B>,C>` to an `Fn2<A,B,C>`
31
+
-`MonadBase`, an interface representing lifting infrastructure for `Monad`s
32
+
-`Lift`, an existentially-quantified lifting function for some `MonadBase` type
33
+
-`MonadReader` and `MonadWriter`, general interfaces for reading from an environment and accumulating results
34
+
-`StateT`, the `State` monad transformer
35
+
-`WriterT`, a monad transformer for an accumulation and a value
36
+
-`EquivalenceTrait`, a traitor `Trait` to make it easier to test properties of type-classes with a separate equivalence
37
+
relation
30
38
31
39
## [4.0.0] - 2019-05-20
32
40
### Changed
@@ -101,11 +109,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
101
109
102
110
## [3.2.0] - 2018-12-08
103
111
### Changed
104
-
-***Breaking Change***: `Difference` and `Intersection` no longer instances of `Semigroup` and moved to `functions.builtin.fn2` package
112
+
-***Breaking Change***: `Difference` and `Intersection` no longer instances of `Semigroup` and moved to
113
+
`functions.builtin.fn2` package
105
114
-***Breaking Change***: `Absent` moved to `semigroup.builtin` package
106
115
-***Breaking Change***: `Effect#accept()` is now the required method to implement in the functional interface
107
116
-***Breaking Change***: `Fn0#apply()` is now the required method to implement in the functional interface
108
-
-***Breaking Change***: `GTBy`, `GT`, `LTBy`, `LT`, `GTEBy`, `GTE`, `LTEBy`, and `LTE` take the right-hand side first for more intuitive partial application
117
+
-***Breaking Change***: `GTBy`, `GT`, `LTBy`, `LT`, `GTEBy`, `GTE`, `LTEBy`, and `LTE` take the right-hand side first
118
+
for more intuitive partial application
109
119
-***Breaking Change***: `Effect` now returns an `IO`
110
120
-`RightAny` overload returns `Monoid`
111
121
- monoids now all fold with respect to `foldMap`
@@ -207,14 +217,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
207
217
### Changed
208
218
-***Breaking Change***: `Sequence` now has two more type parameters to aid in inference
209
219
-***Breaking Change***: `Traversable#traverse` now has three more type parameters to aid in inference
210
-
-***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)
211
-
-***Breaking Change***: `TypeSafeKey` is now dually parametric (single parameter analog is preserved in `TypeSafeKey.Simple`)
220
+
-***Breaking Change***: `Monad#zip` now forces `m a -> b` before `m a` in default `Applicative#zip` implementation;
221
+
this is only breaking for types that are sensitive to computation order (the resulting values are the same)
222
+
-***Breaking Change***: `TypeSafeKey` is now dually parametric (single parameter analog is preserved in
223
+
`TypeSafeKey.Simple`)
212
224
-`Bifunctor` is now a `BoundedBifunctor` where both parameter upper bounds are `Object`
213
225
-`Peek2` now accepts the more general `BoundedBifunctor`
214
226
-`Identity`, `Compose`, and `Const` functors all have better `toString` implementations
215
227
-`Into3-8` now supports functions with parameter variance
216
228
-`HListLens#tail` is now covariant in `Tail` parameter
217
-
- More functions now automatically deforest nested calls (`concat``cons`, `cycle`, `distinct`, `drop`, `dropwhile`, `filter`, `map`, `reverse`, `snoc`, `take`, `takewhile`, `tail`)
229
+
- More functions now automatically deforest nested calls (`concat``cons`, `cycle`, `distinct`, `drop`, `dropwhile`,
-`Flatten` calls `Iterator#hasNext` less aggressively, allowing for better laziness
219
232
-`Lens` subtypes `LensLike`
220
233
-`View`/`Set`/`Over` now only require `LensLike`
@@ -280,7 +293,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
280
293
-`CollectionLens#asSet(Function)`, a proper analog of `CollectionLens#asSet()` that uses defensive copies
281
294
-`CollectionLens#asStream(Function)`, a proper analog of `CollectionLens#asStream()` that uses defensive copies
282
295
- Explicitly calling attention to all unlawful lenses in their documentation
283
-
-`Peek` and `Peek2`, for "peeking" at the value contained inside any given `Functor` or `Bifunctor` with given side-effects
296
+
-`Peek` and `Peek2`, for "peeking" at the value contained inside any given `Functor` or `Bifunctor` with given
297
+
side-effects
284
298
-`Trampoline` and `RecursiveResult` for modeling primitive tail-recursive functions that can be trampolined
285
299
286
300
### Removed
@@ -390,7 +404,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
390
404
-`Const` supports value equality
391
405
-`partition` now only requires iterables of `CoProudct2`
392
406
-`CoProductN`s receive a unification parameter, which trickles down to `Either` and `Choice`s
393
-
-`Concat` now represents a monoid for `Iterable`; previous `Concat` semigroup and monoid renamed to more appropriate `AddAll`
407
+
-`Concat` now represents a monoid for `Iterable`; previous `Concat` semigroup and monoid renamed to more appropriate
408
+
`AddAll`
394
409
-`Lens` is now an instance of `Profunctor`
395
410
396
411
### Added
@@ -400,14 +415,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
400
415
-`empty`, used to test if an Iterable is empty
401
416
-`groupBy`, for folding an Iterable into a Map given a key function
402
417
-`Applicative` arrives; all functors gain applicative properties
403
-
-`Traversable` arrives; `SingletonHList`, `Tuple*`, `Choice*`, `Either`, `Identity`, and `Const` gain traversable properties
418
+
-`Traversable` arrives; `SingletonHList`, `Tuple*`, `Choice*`, `Either`, `Identity`, and `Const` gain traversable
419
+
properties
404
420
-`TraversableOptional` and `TraversableIterable` for adapting `Optional` and `Iterable`, respectively, to `Traversable`
405
421
-`sequence` for wrapping a traversable in an applicative during traversal
406
422
-`Compose`, an applicative functor that represents type-level functor composition
407
423
408
424
## [1.5.6] - 2017-02-11
409
425
### Changed
410
-
-`CoProductN.[a-e]()` static factory methods moved to equivalent `ChoiceN` class. Coproduct interfaces now solely represent methods, no longer have anonymous implementations, and no longer require a `Functor` constraint
426
+
-`CoProductN.[a-e]()` static factory methods moved to equivalent `ChoiceN` class. Coproduct interfaces now solely
427
+
represent methods, no longer have anonymous implementations, and no longer require a `Functor` constraint
411
428
412
429
### Added
413
430
-`ChoiceN` types, representing concrete coproduct implementations that are also `Functor` and `BiFunctor`
@@ -461,7 +478,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
461
478
462
479
## [1.4] - 2016-08-08
463
480
### Changed
464
-
- All function input values become `java.util.function` types, and all function output values remain lambda types, for better compatibility
481
+
- All function input values become `java.util.function` types, and all function output values remain lambda types, for
0 commit comments