bluefin-internal 0.4.3.0 → 0.5.0.0
raw patch · 4 files changed
+13/−10 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Bluefin.Internal.Prim: runPrim :: forall (es :: Effects) r. (forall (e :: Effects). () => Prim e -> Eff (e :& es) r) -> Eff es r
- Bluefin.Internal.Prim: primitive :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) a. (e1 :> es, e2 :> es) => Prim e1 -> (State# (PrimStateEff e2) -> (# State# (PrimStateEff e2), a #)) -> Eff es a
+ Bluefin.Internal.Prim: primitive :: forall (e1 :: Effects) (es :: Effects) a. e1 :> es => Prim e1 -> (State# (PrimStateEff e1) -> (# State# (PrimStateEff e1), a #)) -> Eff es a
Files
- CHANGELOG.md +4/−0
- bluefin-internal.cabal +1/−1
- src/Bluefin/Internal/Prim.hs +8/−8
- test/Main.hs +0/−1
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.5.0.0++* Fix dodgy `Bluefin.Primitive.Internal.primitive` implementation+ # 0.4.3.0 * Add `Bluefin.Internal.GadtEffect`
bluefin-internal.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: bluefin-internal-version: 0.4.3.0+version: 0.5.0.0 license: MIT license-file: LICENSE author: Tom Ellis
src/Bluefin/Internal/Prim.hs view
@@ -10,12 +10,6 @@ import GHC.Exts (State#) import Unsafe.Coerce (unsafeCoerce) --- I suppose morally this is------ (State# (PrimStateEff e) -> (# State# (PrimStateEff e), a #))------ but since there can only be one valid implementation it doesn't--- seem worth doing it like that. data Prim (e :: Effects) = UnsafeMkPrim deriving Handle via OneWayCoercibleHandle Prim @@ -24,10 +18,16 @@ instance (e :> es) => OneWayCoercible (Prim e) (Prim es) where oneWayCoercibleImpl = unsafeOneWayCoercible +runPrim ::+ (forall e. Prim e -> Eff (e :& es) r) ->+ -- | ͘+ Eff es r+runPrim k = makeOp (k UnsafeMkPrim)+ primitive ::- (e1 :> es, e2 :> es) =>+ (e1 :> es) => Prim e1 ->- (State# (PrimStateEff e2) -> (# State# (PrimStateEff e2), a #)) ->+ (State# (PrimStateEff e1) -> (# State# (PrimStateEff e1), a #)) -> -- | ͘ Eff es a primitive UnsafeMkPrim = unsafeCoerce (P.primitive @IO)
test/Main.hs view
@@ -4,7 +4,6 @@ module Main (main) where import Bluefin.Internal-import Bluefin.Internal.DslBuilder import Control.Monad (when) import Data.Foldable (for_) import Test.GeneralBracket (test_generalBracket)