The Bluefin effect system, internals

Changes

0.10.0.0

  • Make Ask, AskCapability, Await, JumpTo, Modify, Request, ReturnEarly, Tell, Throw, and Yield the canonical capability types; Reader, HandleReader, Consume, Jump, State, Coroutine, EarlyReturn, Writer, Exception, and Stream are now type synonyms.

  • Move Bluefin.Internal.Pipes to bluefin-examples

  • Remove unused failing stubs connect and head' from Bluefin.Internal

  • Breaking change: separate Prim’s primitive state and capability scope type parameters

0.9.2.0

  • Bug fix: release Reader Vault keys when their handler scope exits.

  • Make Vault‘s Key type role representational. This is technically a PVP violation but since it’s fixing a type safety bug we’re not going to release a major version for it.

0.9.1.0

  • Add yieldToPureList

0.9.0.0

  • Add quantified constraint forall e es. (e <: es) => OneWayCoercible (h e) (h es) as a superclass of Handle h

  • Improve performance of mapHandle by using unsafeOneWayCoerce. This can violate type safety if a OneWayCoercibleInstance is invalid, so do not define or use invalid OneWayCoercible instances!

0.8.2.0

  • Improve performance of Reader and DslBuilderEff

0.8.1.0

  • Add trans3D, oneWayCoercibleNewtypeHandle

0.8.0.0

  • Restrict Reader type tag to Effects

  • Move most of Bluefin.Internal.Examples, zipCoroutines and mapStream to Bluefin.Examples

0.7.0.0

0.6.0.0

  • Changed type of runEff to match runEff_

0.5.100.0

  • Add exports for change to “capability” nomenclature

0.5.1.0

  • Add <: type synonym for :>

0.6.0.0

  • Changed type of runEff to match runEff_

0.5.0.0

  • Fix dodgy Bluefin.Primitive.Internal.primitive implementation

0.4.3.0

  • Add Bluefin.Internal.GadtEffect

  • Add Bluefin.Internal.asksHandle

  • Restrict type parameter of PrimStateEff to Effects

    This is technically a breaking change, but we did not enforce a major version bump for it.

0.4.2.0

  • Add Bluefin.Internal.DslBuilderEff

  • Add Bluefin.Internal.Prim

0.4.1.0

  • Add MonadFix instance for Eff, thanks to Adriaan Leijnse

0.4.0.0

  • Move mapHandle out of class Handle

  • Remove Bluefin.Internal.handleOneWayCoercion

  • Remove Bluefin.Internal.handleMapHandle

  • Add a variety of Handle functionality

0.3.5.0

  • Add Bluefin.Internal.oneWayCoercibleTrustMe

  • Add OneWayCoercible instances for Generic types

0.3.4.0

  • Add Bluefin.Internal.Exception and tests, thanks to Shea Levy

  • Export Bluefin.Internal.Exception.Scoped.Exception constructors

  • Export Bluefin.Internal.Exception.Scoped.check

0.3.3.0

  • Add finally

0.3.2.0

  • Add Bluefin.Internal.CloneHandle

0.3.1.0

  • Add Bluefin.Internal.DslBuilder

0.3.0.0

  • Add Bluefin.Internal.OneWayCoercible module and related instances

  • Add Bluefin.Internal.OneWayCoercibleHandle and related functions

0.2.1.0

  • Add handleImpl, HandleD and handleMapHandle

  • Add type role for Exception. This is technically a breaking change but it seems extremely unlikely to break working code, so we are not imposing a major version bump.

  • Internal details of proof terms

    • Add proof terms for `:>~ instances.

    • Use ZW as the argument instead of (# #).

    • Add unsafeAxiom

0.2.0.0

  • Choose different incoherent instance for :> for better type inference. This is very unlikely to break existing code, but if it does happen then please open an issue.

0.1.2.0

  • Fix strictness of Bluefin.State.put. It was accidentally made lazy in 0.1.0.0.

0.1.1.0

  • WARNING: Bluefin.State.put is still lazy in this version. It is fixed in 0.1.2.0.

  • Added streamConsume, cycleToStream, takeConsume (thanks to @iteratee)

  • Restrict the kind of the argument to Bluefin.Internal.Exception.Scoped.Exception and Bluefin.Internal.ConstEffect to Effects

0.1.0.0

  • WARNING: Bluefin.State.put accidentally became lazy in this version. It is fixed in 0.1.2.0.

  • Implement Exception using Eff not naked IO

  • Remove unused unsafeRemoveEff

  • Add unsafeCoerceEff

  • Rename UnsafeMkException to MkException

  • Add type roles for StateSource, State, IOE

  • Correct implementation of have

  • Add withStateInIO

  • Correct type signature of newState

  • Add safe scoped exceptions implementation

    • Bluefin.Internal.Exception.Scoped

    • Bluefin.Internal..Scoped

0.0.15.0

  • Add runEff_ and ignoreStream

0.0.14.0

  • Add hGetLine and hIsEOF

  • Add ConstEffect, runConstEffect

  • Add HandleReader, mapHandleReader, localHandle, askHandle, runHandleReader

0.0.13.0

  • Added some examples

0.0.12.0

  • Add asks and local

0.0.11.0

  • Add withEffToIO_, useImplUnder, makeOp

  • Soft deprecate withEffToIO, useImplWithin

0.0.10.0

  • Add Bluefin.Internal.System.IO

0.0.9.0

  • Add instance Handle IOE

  • Add rethrowIO

0.0.8.0

Add Consume, await, consumeStream, zipCoroutines, consumeEach, and associated examples.

0.0.7.0

Add withEffToIO', race, connectCoroutines, receiveStream, insertManySecond, useImplWithin, unsafeProvideIO, and Bluefin.Internal.Pipes

0.0.6.1

  • Documentation improvements

0.0.6.0

  • Add withYieldToList

0.0.5.0

  • Fix roles on Eff (thanks to @Lysxia)

  • Add bracket (thanks to @Lysxia)

  • Document Jump

0.0.4.2

  • Add documentation for Handle

0.0.4.0

  • Add functions for compound effects

0.0.3.0

  • Add Bluefin.Internal.Reader

0.0.2.0

  • Add Bluefin.Internal.StateSource

0.0.1.0

  • Add Bluefin.Internal.Writer

0.0.0.0

  • Initial version