Changelog for fused-effects-0.3.1.0
0.3.1.0
- Improved speed of
Reader,State,Writer, andPureeffects by defining and inlining auxiliaryApplicativemethods. - Adds
runInterpret&runInterpretStatehandlers inControl.Effect.Interpretas a convenient way to experiment with effect handlers without defining a new carrier type andCarrierinstance. Such handlers are somewhat less efficient than customCarriers, but allow for a smooth upgrade path when more efficiency is required. - Added
unliftio-coreas a dependency so as to provide a blessed API for unlift-style effects and a solution to the cubic-caller problem.
0.3.0.0
Backwards-incompatible changes
- Adds
Monadas a superclass ofCarrier, obviating the need for a lot of constraints, andMonadinstances for all carrier types. This is a backwards-incompatible change, as any carriers users have defined now requireMonadinstances. Note that in many cases carriers can be composed out of existing carriers and monad transformers, and thus these instances can often be derived using-XGeneralizedNewtypeDeriving. We also recommend compiling with-Wredundant-constraintsas many of these can now be removed. - Replaces
AltCwith a new carrier,NonDetC, based on Ralf Hinze’s work in Deriving Backtracking Monad Transformers. This is a backwards-incompatible change.AltCwas equivalent to theListTmonad transformer, and had the same well-known limitation to commutative monads. Therefore, the elimination ofEffrequired a more durable approach. - Removes
Branch. This is a backwards-incompatible change, but was necessitated by the difficulty of implementing correctApplicative&Monadinstances for carriers which used it. Carriers which were employingBranchinternally should be reimplemented usingNonDetCor a similar approach; seeCutCandCullCfor examples. - Renames
Control.Effect.Void,Void, andVoidCtoControl.Effect.Pure,Pure, andPureCrespectively. This is a backwards-incompatible change for code mentioningVoidC; it should be updated to referencePureCinstead.
Deprecations
Effandinterpret, in favour of computing directly in the carriers. This enables the compiler to perform significant optimizations; see the benchmarks for details. Handlers can simply remove theEffwrapping the carrier type & any use ofinterpret. As above, we also recommend compiling with-Wredundant-constraintsas many of these can now be removed.ret, in favor ofpureorreturn.handleEither,handleReader,handleState,handleSum, andhandleTraversablein favour of composing carrier types directly. Carriers can be composed from other carriers andeffdefined withhandleCoercible; and other definitions can usehandlePure&handledirectly.
All deprecated APIs will be removed in the next release.
Other changes
- Adds a lazy
Statecarrier inControl.Effect.State.Lazy - Rewrites
CutCusing an approach related toNonDetC, with the addition of a continuation to distinguishemptyfromcutfail. - Rewrites
CullCusingListCandReaderC. - Moves
OnceCfromControl.Effect.NonDettoControl.Effect.Cullto avoid cyclic dependencies. - Adds a
runCutAllhandler forCuteffects, returning a collection of all results.
0.2.0.2
- Loosens the bounds on QuickCheck to accommodate 2.x.
0.2.0.1
- Fixes the benchmarks, and builds them in CI to avoid regressing them again.
0.2.0.0
- Adds
listen,listens, andcensoroperations toWriter. - Provides explicit type parameters to
run-style functions inState,Reader,Writer, andError. This is a backwards-incompatible change for clients using these functions in combination with visible type applications. - Adds benchmarks of
WriterC/VoidCwrapped withEffagainst their unwrapped counterparts. - Adds
Functor,Applicative, andMonadinstances forWriterC. - Adds
Functor,Applicative, andMonadinstances forVoidC. - Fixes a space leak with
WriterC. - Removes the
Functorconstraint onasksandgets. - Adds
bracketOnError,finally, andonExceptiontoResource. - Adds
sendMtoLift.
0.1.2.1
- Loosens the bounds on QuickCheck to accommodate 0.12.
0.1.2.0
- Adds support for ghc 8.6.2, courtesy of @jkachmar.
- Adds a
Cuteffect which adds committed choice to nondeterminism. - Adds a
Culleffect which adds pruning to nondeterminism. - Adds an example of using
NonDet,Cut, and a character parser effect to define parsers. - Fixes the table of contents links in the README.
0.1.1.0
- Adds a
runNonDetOncehandler which terminates immediately upon finding a solution.
0.1.0.0
Initial release.