packages feed

bluefin 0.5.0.0 → 0.5.1.0

raw patch · 9 files changed

+63/−51 lines, 9 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Bluefin.CloneableHandle: withEffToIOCloneHandle :: forall (e1 :: Effects) (es :: Effects) h a. (e1 :> es, CloneableHandle h) => IOE e1 -> h es -> ((forall r. () => (forall (e :: Effects). () => IOE e -> h e -> Eff e r) -> IO r) -> IO a) -> Eff es a
+ Bluefin.CloneableHandle: withEffToIOCloneHandle :: forall (e1 :: Effects) (es :: Effects) h a. (e1 <: es, CloneableHandle h) => IOE e1 -> h es -> ((forall r. () => (forall (e :: Effects). () => IOE e -> h e -> Eff e r) -> IO r) -> IO a) -> Eff es a
- Bluefin.Compound: handleOneWayCoercible :: forall (h :: Effects -> Type). (forall (e :: Effects) (es :: Effects). e :> es => OneWayCoercible (h e) (h es)) => HandleD h
+ Bluefin.Compound: handleOneWayCoercible :: forall (h :: Effects -> Type). (forall (e :: Effects) (es :: Effects). e <: es => OneWayCoercible (h e) (h es)) => HandleD h
- Bluefin.Compound: mapHandle :: forall h (e :: Effects) (es :: Effects). (Handle h, e :> es) => h e -> h es
+ Bluefin.Compound: mapHandle :: forall h (e :: Effects) (es :: Effects). (Handle h, e <: es) => h e -> h es
- Bluefin.Compound: oneWayCoercibleTrustMe :: forall (e :: Effects) (es :: Effects) h. e :> es => (forall (e' :: Effects) (es' :: Effects). e' :> es' => h e' -> h es') -> OneWayCoercibleD (h e) (h es)
+ Bluefin.Compound: oneWayCoercibleTrustMe :: forall (e :: Effects) (es :: Effects) h. e <: es => (forall (e' :: Effects) (es' :: Effects). e' <: es' => h e' -> h es') -> OneWayCoercibleD (h e) (h es)
- Bluefin.Compound: useImpl :: forall (e :: Effects) (es :: Effects) r. e :> es => Eff e r -> Eff es r
+ Bluefin.Compound: useImpl :: forall (e :: Effects) (es :: Effects) r. e <: es => Eff e r -> Eff es r
- Bluefin.Compound: useImplIn :: forall (e :: Effects) (es :: Effects) t r. e :> es => (t -> Eff (es :& e) r) -> t -> Eff es r
+ Bluefin.Compound: useImplIn :: forall (e :: Effects) (es :: Effects) t r. e <: es => (t -> Eff (es :& e) r) -> t -> Eff es r
- Bluefin.Compound: useImplUnder :: forall (e :: Effects) (es :: Effects) (e1 :: Effects) r. e :> es => Eff (e1 :& e) r -> Eff (e1 :& es) r
+ Bluefin.Compound: useImplUnder :: forall (e :: Effects) (es :: Effects) (e1 :: Effects) r. e <: es => Eff (e1 :& e) r -> Eff (e1 :& es) r
- Bluefin.Compound: useImplWithin :: forall (e :: Effects) (es :: Effects) t (e1 :: Effects) r. e :> es => (t -> Eff (e1 :& e) r) -> t -> Eff (e1 :& es) r
+ Bluefin.Compound: useImplWithin :: forall (e :: Effects) (es :: Effects) t (e1 :: Effects) r. e <: es => (t -> Eff (e1 :& e) r) -> t -> Eff (e1 :& es) r
- Bluefin.Compound: withCompound :: forall h1 h2 (e :: Effects) (es :: Effects) r. e :> es => Compound h1 h2 e -> (forall (e1 :: Effects) (e2 :: Effects). (e1 :> es, e2 :> es) => h1 e1 -> h2 e2 -> Eff es r) -> Eff es r
+ Bluefin.Compound: withCompound :: forall h1 h2 (e :: Effects) (es :: Effects) r. e <: es => Compound h1 h2 e -> (forall (e1 :: Effects) (e2 :: Effects). (e1 <: es, e2 <: es) => h1 e1 -> h2 e2 -> Eff es r) -> Eff es r
- Bluefin.Compound: withHandle :: Handle h => ((forall (e :: Effects) (es :: Effects). e :> es => OneWayCoercible (h e) (h es)) => r) -> r
+ Bluefin.Compound: withHandle :: Handle h => ((forall (e :: Effects) (es :: Effects). e <: es => OneWayCoercible (h e) (h es)) => r) -> r
- Bluefin.Consume: await :: forall (e :: Effects) (es :: Effects) a. e :> es => Consume a e -> Eff es a
+ Bluefin.Consume: await :: forall (e :: Effects) (es :: Effects) a. e <: es => Consume a e -> Eff es a
- Bluefin.Consume: takeConsume :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) a. (e1 :> es, e2 :> es) => Int -> Consume a e1 -> Stream a e2 -> Eff es ()
+ Bluefin.Consume: takeConsume :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) a. (e1 <: es, e2 <: es) => Int -> Consume a e1 -> Stream a e2 -> Eff es ()
- Bluefin.Coroutine: yieldCoroutine :: forall (e1 :: Effects) (es :: Effects) a b. e1 :> es => Coroutine a b e1 -> a -> Eff es b
+ Bluefin.Coroutine: yieldCoroutine :: forall (e1 :: Effects) (es :: Effects) a b. e1 <: es => Coroutine a b e1 -> a -> Eff es b
- Bluefin.EarlyReturn: returnEarly :: forall (e :: Effects) (es :: Effects) r a. e :> es => EarlyReturn r e -> r -> Eff es a
+ Bluefin.EarlyReturn: returnEarly :: forall (e :: Effects) (es :: Effects) r a. e <: es => EarlyReturn r e -> r -> Eff es a
- Bluefin.Eff: withMonadFail :: forall (e :: Effects) (es :: Effects) r. e :> es => Exception String e -> (forall (m :: Type -> Type). MonadFail m => m r) -> Eff es r
+ Bluefin.Eff: withMonadFail :: forall (e :: Effects) (es :: Effects) r. e <: es => Exception String e -> (forall (m :: Type -> Type). MonadFail m => m r) -> Eff es r
- Bluefin.Eff: withMonadIO :: forall (e :: Effects) (es :: Effects) r. e :> es => IOE e -> (forall (m :: Type -> Type). MonadIO m => m r) -> Eff es r
+ Bluefin.Eff: withMonadIO :: forall (e :: Effects) (es :: Effects) r. e <: es => IOE e -> (forall (m :: Type -> Type). MonadIO m => m r) -> Eff es r
- Bluefin.Exception: rethrowIO :: forall ex (es :: Effects) (e1 :: Effects) (e2 :: Effects) r. (e1 :> es, e2 :> es, Exception ex) => IOE e1 -> Exception ex e2 -> Eff es r -> Eff es r
+ Bluefin.Exception: rethrowIO :: forall ex (es :: Effects) (e1 :: Effects) (e2 :: Effects) r. (e1 <: es, e2 <: es, Exception ex) => IOE e1 -> Exception ex e2 -> Eff es r -> Eff es r
- Bluefin.Exception: throw :: forall (e :: Effects) (es :: Effects) ex a. e :> es => Exception ex e -> ex -> Eff es a
+ Bluefin.Exception: throw :: forall (e :: Effects) (es :: Effects) ex a. e <: es => Exception ex e -> ex -> Eff es a
- Bluefin.GadtEffect: interpose :: forall (e1 :: Effects) (es :: Effects) (f :: Effect) r. e1 :> es => (Send f es -> EffectHandler f es) -> HandleReader (Send f) e1 -> Eff es r -> Eff es r
+ Bluefin.GadtEffect: interpose :: forall (e1 :: Effects) (es :: Effects) (f :: Effect) r. e1 <: es => (Send f es -> EffectHandler f es) -> HandleReader (Send f) e1 -> Eff es r -> Eff es r
- Bluefin.GadtEffect: oneWayCoercibleGadtEffectTrustMe :: forall (e :: Effects) (es :: Effects) f r. e :> es => (forall (e' :: Effects) (es' :: Effects). e' :> es' => f (Eff e') r -> f (Eff es') r) -> OneWayCoercibleD (GadtEffect f r e) (GadtEffect f r es)
+ Bluefin.GadtEffect: oneWayCoercibleGadtEffectTrustMe :: forall (e :: Effects) (es :: Effects) f r. e <: es => (forall (e' :: Effects) (es' :: Effects). e' <: es' => f (Eff e') r -> f (Eff es') r) -> OneWayCoercibleD (GadtEffect f r e) (GadtEffect f r es)
- Bluefin.GadtEffect: passthrough :: forall f r (e1 :: Effects) (es :: Effects) (e2 :: Effects). (Handle (GadtEffect f r), e1 :> es, e2 :> es) => Send f e1 -> f (Eff e2) r -> Eff es r
+ Bluefin.GadtEffect: passthrough :: forall f r (e1 :: Effects) (es :: Effects) (e2 :: Effects). (Handle (GadtEffect f r), e1 <: es, e2 <: es) => Send f e1 -> f (Eff e2) r -> Eff es r
- Bluefin.GadtEffect: send :: forall (e1 :: Effects) (es :: Effects) f r. e1 :> es => Send f e1 -> f (Eff es) r -> Eff es r
+ Bluefin.GadtEffect: send :: forall (e1 :: Effects) (es :: Effects) f r. e1 <: es => Send f e1 -> f (Eff es) r -> Eff es r
- Bluefin.HandleReader: askHandle :: forall (e :: Effects) (es :: Effects) h. (e :> es, Handle h) => HandleReader h e -> Eff es (h es)
+ Bluefin.HandleReader: askHandle :: forall (e :: Effects) (es :: Effects) h. (e <: es, Handle h) => HandleReader h e -> Eff es (h es)
- Bluefin.HandleReader: asksHandle :: forall (e1 :: Effects) (es :: Effects) h r. (e1 :> es, Handle h) => HandleReader h e1 -> (forall (e :: Effects). () => h e -> Eff (e :& es) r) -> Eff es r
+ Bluefin.HandleReader: asksHandle :: forall (e1 :: Effects) (es :: Effects) h r. (e1 <: es, Handle h) => HandleReader h e1 -> (forall (e :: Effects). () => h e -> Eff (e :& es) r) -> Eff es r
- Bluefin.HandleReader: localHandle :: forall (e :: Effects) (es :: Effects) h r. (e :> es, Handle h) => HandleReader h e -> (h es -> h es) -> Eff es r -> Eff es r
+ Bluefin.HandleReader: localHandle :: forall (e :: Effects) (es :: Effects) h r. (e <: es, Handle h) => HandleReader h e -> (h es -> h es) -> Eff es r -> Eff es r
- Bluefin.HandleReader: runHandleReader :: forall (e1 :: Effects) (es :: Effects) h r. (e1 :> es, Handle h) => h e1 -> (forall (e :: Effects). () => HandleReader h e -> Eff (e :& es) r) -> Eff es r
+ Bluefin.HandleReader: runHandleReader :: forall (e1 :: Effects) (es :: Effects) h r. (e1 <: es, Handle h) => h e1 -> (forall (e :: Effects). () => HandleReader h e -> Eff (e :& es) r) -> Eff es r
- Bluefin.IO: effIO :: forall (e :: Effects) (es :: Effects) a. e :> es => IOE e -> IO a -> Eff es a
+ Bluefin.IO: effIO :: forall (e :: Effects) (es :: Effects) a. e <: es => IOE e -> IO a -> Eff es a
- Bluefin.IO: rethrowIO :: forall ex (es :: Effects) (e1 :: Effects) (e2 :: Effects) r. (e1 :> es, e2 :> es, Exception ex) => IOE e1 -> Exception ex e2 -> Eff es r -> Eff es r
+ Bluefin.IO: rethrowIO :: forall ex (es :: Effects) (e1 :: Effects) (e2 :: Effects) r. (e1 <: es, e2 <: es, Exception ex) => IOE e1 -> Exception ex e2 -> Eff es r -> Eff es r
- Bluefin.IO: withEffToIO :: forall (e2 :: Effects) (es :: Effects) a. e2 :> es => ((forall r. () => (forall (e1 :: Effects). () => IOE e1 -> Eff (e1 :& es) r) -> IO r) -> IO a) -> IOE e2 -> Eff es a
+ Bluefin.IO: withEffToIO :: forall (e2 :: Effects) (es :: Effects) a. e2 <: es => ((forall r. () => (forall (e1 :: Effects). () => IOE e1 -> Eff (e1 :& es) r) -> IO r) -> IO a) -> IOE e2 -> Eff es a
- Bluefin.IO: withEffToIOCloneHandle :: forall (e1 :: Effects) (es :: Effects) h a. (e1 :> es, CloneableHandle h) => IOE e1 -> h es -> ((forall r. () => (forall (e :: Effects). () => IOE e -> h e -> Eff e r) -> IO r) -> IO a) -> Eff es a
+ Bluefin.IO: withEffToIOCloneHandle :: forall (e1 :: Effects) (es :: Effects) h a. (e1 <: es, CloneableHandle h) => IOE e1 -> h es -> ((forall r. () => (forall (e :: Effects). () => IOE e -> h e -> Eff e r) -> IO r) -> IO a) -> Eff es a
- Bluefin.IO: withEffToIO_ :: forall (e :: Effects) (es :: Effects) a. e :> es => IOE e -> ((forall r. () => Eff es r -> IO r) -> IO a) -> Eff es a
+ Bluefin.IO: withEffToIO_ :: forall (e :: Effects) (es :: Effects) a. e <: es => IOE e -> ((forall r. () => Eff es r -> IO r) -> IO a) -> Eff es a
- Bluefin.IO: withMonadIO :: forall (e :: Effects) (es :: Effects) r. e :> es => IOE e -> (forall (m :: Type -> Type). MonadIO m => m r) -> Eff es r
+ Bluefin.IO: withMonadIO :: forall (e :: Effects) (es :: Effects) r. e <: es => IOE e -> (forall (m :: Type -> Type). MonadIO m => m r) -> Eff es r
- Bluefin.Jump: jumpTo :: forall (e :: Effects) (es :: Effects) a. e :> es => Jump e -> Eff es a
+ Bluefin.Jump: jumpTo :: forall (e :: Effects) (es :: Effects) a. e <: es => Jump e -> Eff es a
- Bluefin.Pipes: (<-<) :: forall (e1 :: Effects) (es :: Effects) b c' c r a' a. e1 :> es => (forall (e :: Effects). () => Proxy () b c' c e -> Eff (e :& es) r) -> (forall (e :: Effects). () => Proxy a' a () b e -> Eff (e :& es) r) -> Proxy a' a c' c e1 -> Eff es r
+ Bluefin.Pipes: (<-<) :: forall (e1 :: Effects) (es :: Effects) b c' c r a' a. e1 <: es => (forall (e :: Effects). () => Proxy () b c' c e -> Eff (e :& es) r) -> (forall (e :: Effects). () => Proxy a' a () b e -> Eff (e :& es) r) -> Proxy a' a c' c e1 -> Eff es r
- Bluefin.Pipes: (<~) :: forall (e1 :: Effects) (es :: Effects) b x' x c' c b' a a'. e1 :> es => (b -> forall (e :: Effects). () => Proxy x' x c' c e -> Eff (e :& es) b') -> (a -> forall (e :: Effects). () => Proxy x' x b' b e -> Eff (e :& es) a') -> a -> Proxy x' x c' c e1 -> Eff es a'
+ Bluefin.Pipes: (<~) :: forall (e1 :: Effects) (es :: Effects) b x' x c' c b' a a'. e1 <: es => (b -> forall (e :: Effects). () => Proxy x' x c' c e -> Eff (e :& es) b') -> (a -> forall (e :: Effects). () => Proxy x' x b' b e -> Eff (e :& es) a') -> a -> Proxy x' x c' c e1 -> Eff es a'
- Bluefin.Pipes: (>->) :: forall (e1 :: Effects) (es :: Effects) a' a b r c' c. e1 :> es => (forall (e :: Effects). () => Proxy a' a () b e -> Eff (e :& es) r) -> (forall (e :: Effects). () => Proxy () b c' c e -> Eff (e :& es) r) -> Proxy a' a c' c e1 -> Eff es r
+ Bluefin.Pipes: (>->) :: forall (e1 :: Effects) (es :: Effects) a' a b r c' c. e1 <: es => (forall (e :: Effects). () => Proxy a' a () b e -> Eff (e :& es) r) -> (forall (e :: Effects). () => Proxy () b c' c e -> Eff (e :& es) r) -> Proxy a' a c' c e1 -> Eff es r
- Bluefin.Pipes: (>~) :: forall (e1 :: Effects) (es :: Effects) a' a y' y b c. e1 :> es => (forall (e :: Effects). () => Proxy a' a y' y e -> Eff (e :& es) b) -> (forall (e :: Effects). () => Proxy () b y' y e -> Eff (e :& es) c) -> Proxy a' a y' y e1 -> Eff es c
+ Bluefin.Pipes: (>~) :: forall (e1 :: Effects) (es :: Effects) a' a y' y b c. e1 <: es => (forall (e :: Effects). () => Proxy a' a y' y e -> Eff (e :& es) b) -> (forall (e :: Effects). () => Proxy () b y' y e -> Eff (e :& es) c) -> Proxy a' a y' y e1 -> Eff es c
- Bluefin.Pipes: (~<) :: forall (e1 :: Effects) (es :: Effects) b y' y c a' a. e1 :> es => (forall (e :: Effects). () => Proxy () b y' y e -> Eff (e :& es) c) -> (forall (e :: Effects). () => Proxy a' a y' y e -> Eff (e :& es) b) -> Proxy a' a y' y e1 -> Eff es c
+ Bluefin.Pipes: (~<) :: forall (e1 :: Effects) (es :: Effects) b y' y c a' a. e1 <: es => (forall (e :: Effects). () => Proxy () b y' y e -> Eff (e :& es) c) -> (forall (e :: Effects). () => Proxy a' a y' y e -> Eff (e :& es) b) -> Proxy a' a y' y e1 -> Eff es c
- Bluefin.Pipes: (~>) :: forall (e1 :: Effects) (es :: Effects) a x' x b' b a' c' c. e1 :> es => (a -> forall (e :: Effects). () => Proxy x' x b' b e -> Eff (e :& es) a') -> (b -> forall (e :: Effects). () => Proxy x' x c' c e -> Eff (e :& es) b') -> a -> Proxy x' x c' c e1 -> Eff es a'
+ Bluefin.Pipes: (~>) :: forall (e1 :: Effects) (es :: Effects) a x' x b' b a' c' c. e1 <: es => (a -> forall (e :: Effects). () => Proxy x' x b' b e -> Eff (e :& es) a') -> (b -> forall (e :: Effects). () => Proxy x' x c' c e -> Eff (e :& es) b') -> a -> Proxy x' x c' c e1 -> Eff es a'
- Bluefin.Pipes: await :: forall (e :: Effects) (es :: Effects) a y' y. e :> es => Proxy () a y' y e -> Eff es a
+ Bluefin.Pipes: await :: forall (e :: Effects) (es :: Effects) a y' y. e <: es => Proxy () a y' y e -> Eff es a
- Bluefin.Pipes: for :: forall (e1 :: Effects) (es :: Effects) x' x b' b a' c' c. e1 :> es => (forall (e :: Effects). () => Proxy x' x b' b e -> Eff (e :& es) a') -> (b -> forall (e :: Effects). () => Proxy x' x c' c e -> Eff (e :& es) b') -> Proxy x' x c' c e1 -> Eff es a'
+ Bluefin.Pipes: for :: forall (e1 :: Effects) (es :: Effects) x' x b' b a' c' c. e1 <: es => (forall (e :: Effects). () => Proxy x' x b' b e -> Eff (e :& es) a') -> (b -> forall (e :: Effects). () => Proxy x' x c' c e -> Eff (e :& es) b') -> Proxy x' x c' c e1 -> Eff es a'
- Bluefin.Pipes: yield :: forall (e :: Effects) (es :: Effects) x1 x a. e :> es => Proxy x1 x () a e -> a -> Eff es ()
+ Bluefin.Pipes: yield :: forall (e :: Effects) (es :: Effects) x1 x a. e <: es => Proxy x1 x () a e -> a -> Eff es ()
- Bluefin.Pipes.Prelude: drain :: forall (e :: Effects) (es :: Effects) b c' c r. e :> es => Proxy () b c' c e -> Eff es r
+ Bluefin.Pipes.Prelude: drain :: forall (e :: Effects) (es :: Effects) b c' c r. e <: es => Proxy () b c' c e -> Eff es r
- Bluefin.Pipes.Prelude: map :: forall (e :: Effects) (es :: Effects) a b r. e :> es => (a -> b) -> Pipe a b e -> Eff es r
+ Bluefin.Pipes.Prelude: map :: forall (e :: Effects) (es :: Effects) a b r. e <: es => (a -> b) -> Pipe a b e -> Eff es r
- Bluefin.Pipes.Prelude: mapM :: forall (e :: Effects) (es :: Effects) a b r. e :> es => (a -> Eff es b) -> Pipe a b e -> Eff es r
+ Bluefin.Pipes.Prelude: mapM :: forall (e :: Effects) (es :: Effects) a b r. e <: es => (a -> Eff es b) -> Pipe a b e -> Eff es r
- Bluefin.Pipes.Prelude: mapM_ :: forall (e :: Effects) (es :: Effects) a b b' r. e :> es => (a -> Eff es ()) -> Proxy () a b b' e -> Eff es r
+ Bluefin.Pipes.Prelude: mapM_ :: forall (e :: Effects) (es :: Effects) a b b' r. e <: es => (a -> Eff es ()) -> Proxy () a b b' e -> Eff es r
- Bluefin.Pipes.Prelude: print :: forall (e2 :: Effects) (es :: Effects) (e1 :: Effects) a r. (e2 :> es, e1 :> es, Show a) => IOE e1 -> Consumer a e2 -> Eff es r
+ Bluefin.Pipes.Prelude: print :: forall (e2 :: Effects) (es :: Effects) (e1 :: Effects) a r. (e2 <: es, e1 <: es, Show a) => IOE e1 -> Consumer a e2 -> Eff es r
- Bluefin.Pipes.Prelude: repeatM :: forall (e :: Effects) (es :: Effects) a x' x r. e :> es => Eff es a -> Proxy x' x () a e -> Eff es r
+ Bluefin.Pipes.Prelude: repeatM :: forall (e :: Effects) (es :: Effects) a x' x r. e <: es => Eff es a -> Proxy x' x () a e -> Eff es r
- Bluefin.Pipes.Prelude: replicateM :: forall (e :: Effects) (es :: Effects) a x' x. e :> es => Int -> Eff es a -> Proxy x' x () a e -> Eff es ()
+ Bluefin.Pipes.Prelude: replicateM :: forall (e :: Effects) (es :: Effects) a x' x. e <: es => Int -> Eff es a -> Proxy x' x () a e -> Eff es ()
- Bluefin.Pipes.Prelude: stdinLn :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) r. (e1 :> es, e2 :> es) => IOE e1 -> Producer String e2 -> Eff es r
+ Bluefin.Pipes.Prelude: stdinLn :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) r. (e1 <: es, e2 <: es) => IOE e1 -> Producer String e2 -> Eff es r
- Bluefin.Pipes.Prelude: stdoutLn :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) r. (e1 :> es, e2 :> es) => IOE e1 -> Consumer String e2 -> Eff es r
+ Bluefin.Pipes.Prelude: stdoutLn :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) r. (e1 <: es, e2 <: es) => IOE e1 -> Consumer String e2 -> Eff es r
- Bluefin.Pipes.Prelude: takeWhile' :: forall (e :: Effects) (es :: Effects) r. e :> es => (r -> Bool) -> Pipe r r e -> Eff es r
+ Bluefin.Pipes.Prelude: takeWhile' :: forall (e :: Effects) (es :: Effects) r. e <: es => (r -> Bool) -> Pipe r r e -> Eff es r
- Bluefin.Pipes.Prelude: unfoldr :: forall (e :: Effects) (es :: Effects) s r a x1 x. e :> es => (s -> Eff es (Either r (a, s))) -> s -> Proxy x1 x () a e -> Eff es r
+ Bluefin.Pipes.Prelude: unfoldr :: forall (e :: Effects) (es :: Effects) s r a x1 x. e <: es => (s -> Eff es (Either r (a, s))) -> s -> Proxy x1 x () a e -> Eff es r
- Bluefin.Prim: primitive :: forall (e1 :: Effects) (es :: Effects) a. e1 :> es => Prim e1 -> (State# (PrimStateEff e1) -> (# State# (PrimStateEff e1), a #)) -> Eff es a
+ Bluefin.Prim: primitive :: forall (e1 :: Effects) (es :: Effects) a. e1 <: es => Prim e1 -> (State# (PrimStateEff e1) -> (# State# (PrimStateEff e1), a #)) -> Eff es a
- Bluefin.Reader: ask :: forall (e :: Effects) (es :: Effects) r. e :> es => Reader r e -> Eff es r
+ Bluefin.Reader: ask :: forall (e :: Effects) (es :: Effects) r. e <: es => Reader r e -> Eff es r
- Bluefin.Reader: asks :: forall (e :: Effects) (es :: Effects) r a. e :> es => Reader r e -> (r -> a) -> Eff es a
+ Bluefin.Reader: asks :: forall (e :: Effects) (es :: Effects) r a. e <: es => Reader r e -> (r -> a) -> Eff es a
- Bluefin.Reader: local :: forall (e1 :: Effects) (es :: Effects) r a. e1 :> es => Reader r e1 -> (r -> r) -> Eff es a -> Eff es a
+ Bluefin.Reader: local :: forall (e1 :: Effects) (es :: Effects) r a. e1 <: es => Reader r e1 -> (r -> r) -> Eff es a -> Eff es a
- Bluefin.State: get :: forall (e :: Effects) (es :: Effects) s. e :> es => State s e -> Eff es s
+ Bluefin.State: get :: forall (e :: Effects) (es :: Effects) s. e <: es => State s e -> Eff es s
- Bluefin.State: modify :: forall (e :: Effects) (es :: Effects) s. e :> es => State s e -> (s -> s) -> Eff es ()
+ Bluefin.State: modify :: forall (e :: Effects) (es :: Effects) s. e <: es => State s e -> (s -> s) -> Eff es ()
- Bluefin.State: put :: forall (e :: Effects) (es :: Effects) s. e :> es => State s e -> s -> Eff es ()
+ Bluefin.State: put :: forall (e :: Effects) (es :: Effects) s. e <: es => State s e -> s -> Eff es ()
- Bluefin.StateSource: newState :: forall (e :: Effects) (es :: Effects) s. e :> es => StateSource e -> s -> Eff es (State s e)
+ Bluefin.StateSource: newState :: forall (e :: Effects) (es :: Effects) s. e <: es => StateSource e -> s -> Eff es (State s e)
- Bluefin.Stream: catMaybes :: forall (e2 :: Effects) (es :: Effects) a r. e2 :> es => (forall (e1 :: Effects). () => Stream (Maybe a) e1 -> Eff (e1 :& es) r) -> Stream a e2 -> Eff es r
+ Bluefin.Stream: catMaybes :: forall (e2 :: Effects) (es :: Effects) a r. e2 <: es => (forall (e1 :: Effects). () => Stream (Maybe a) e1 -> Eff (e1 :& es) r) -> Stream a e2 -> Eff es r
- Bluefin.Stream: cycleToStream :: forall f (e1 :: Effects) (es :: Effects) a. (Foldable f, e1 :> es) => f a -> Stream a e1 -> Eff es ()
+ Bluefin.Stream: cycleToStream :: forall f (e1 :: Effects) (es :: Effects) a. (Foldable f, e1 <: es) => f a -> Stream a e1 -> Eff es ()
- Bluefin.Stream: enumerate :: forall (e2 :: Effects) (es :: Effects) a r. e2 :> es => (forall (e1 :: Effects). () => Stream a e1 -> Eff (e1 :& es) r) -> Stream (Int, a) e2 -> Eff es r
+ Bluefin.Stream: enumerate :: forall (e2 :: Effects) (es :: Effects) a r. e2 <: es => (forall (e1 :: Effects). () => Stream a e1 -> Eff (e1 :& es) r) -> Stream (Int, a) e2 -> Eff es r
- Bluefin.Stream: enumerateFrom :: forall (e2 :: Effects) (es :: Effects) a r. e2 :> es => Int -> (forall (e1 :: Effects). () => Stream a e1 -> Eff (e1 :& es) r) -> Stream (Int, a) e2 -> Eff es r
+ Bluefin.Stream: enumerateFrom :: forall (e2 :: Effects) (es :: Effects) a r. e2 <: es => Int -> (forall (e1 :: Effects). () => Stream a e1 -> Eff (e1 :& es) r) -> Stream (Int, a) e2 -> Eff es r
- Bluefin.Stream: inFoldable :: forall t (e1 :: Effects) (es :: Effects) a. (Foldable t, e1 :> es) => t a -> Stream a e1 -> Eff es ()
+ Bluefin.Stream: inFoldable :: forall t (e1 :: Effects) (es :: Effects) a. (Foldable t, e1 <: es) => t a -> Stream a e1 -> Eff es ()
- Bluefin.Stream: mapMaybe :: forall (e2 :: Effects) (es :: Effects) a b r. e2 :> es => (a -> Maybe b) -> (forall (e1 :: Effects). () => Stream a e1 -> Eff (e1 :& es) r) -> Stream b e2 -> Eff es r
+ Bluefin.Stream: mapMaybe :: forall (e2 :: Effects) (es :: Effects) a b r. e2 <: es => (a -> Maybe b) -> (forall (e1 :: Effects). () => Stream a e1 -> Eff (e1 :& es) r) -> Stream b e2 -> Eff es r
- Bluefin.Stream: takeConsume :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) a. (e1 :> es, e2 :> es) => Int -> Consume a e1 -> Stream a e2 -> Eff es ()
+ Bluefin.Stream: takeConsume :: forall (e1 :: Effects) (es :: Effects) (e2 :: Effects) a. (e1 <: es, e2 <: es) => Int -> Consume a e1 -> Stream a e2 -> Eff es ()
- Bluefin.Stream: yield :: forall (e1 :: Effects) (es :: Effects) a. e1 :> es => Stream a e1 -> a -> Eff es ()
+ Bluefin.Stream: yield :: forall (e1 :: Effects) (es :: Effects) a. e1 <: es => Stream a e1 -> a -> Eff es ()
- Bluefin.System.IO: hFlush :: forall (e :: Effects) (es :: Effects). e :> es => Handle e -> Eff es ()
+ Bluefin.System.IO: hFlush :: forall (e :: Effects) (es :: Effects). e <: es => Handle e -> Eff es ()
- Bluefin.System.IO: hGetLine :: forall (e :: Effects) (es :: Effects). e :> es => Handle e -> Eff es String
+ Bluefin.System.IO: hGetLine :: forall (e :: Effects) (es :: Effects). e <: es => Handle e -> Eff es String
- Bluefin.System.IO: hIsEOF :: forall (e :: Effects) (es :: Effects). e :> es => Handle e -> Eff es Bool
+ Bluefin.System.IO: hIsEOF :: forall (e :: Effects) (es :: Effects). e <: es => Handle e -> Eff es Bool
- Bluefin.System.IO: hPutChar :: forall (e :: Effects) (es :: Effects). e :> es => Handle e -> Char -> Eff es ()
+ Bluefin.System.IO: hPutChar :: forall (e :: Effects) (es :: Effects). e <: es => Handle e -> Char -> Eff es ()
- Bluefin.System.IO: hPutStr :: forall (e :: Effects) (es :: Effects). e :> es => Handle e -> String -> Eff es ()
+ Bluefin.System.IO: hPutStr :: forall (e :: Effects) (es :: Effects). e <: es => Handle e -> String -> Eff es ()
- Bluefin.System.IO: hPutStrLn :: forall (e :: Effects) (es :: Effects). e :> es => Handle e -> String -> Eff es ()
+ Bluefin.System.IO: hPutStrLn :: forall (e :: Effects) (es :: Effects). e <: es => Handle e -> String -> Eff es ()
- Bluefin.System.IO: unsafeWithHandle :: forall (e1 :: Effects) (es :: Effects) r. e1 :> es => Handle e1 -> (Handle -> IO r) -> Eff es r
+ Bluefin.System.IO: unsafeWithHandle :: forall (e1 :: Effects) (es :: Effects) r. e1 <: es => Handle e1 -> (Handle -> IO r) -> Eff es r
- Bluefin.System.IO: withFile :: forall (e1 :: Effects) (es :: Effects) r. e1 :> es => IOE e1 -> FilePath -> IOMode -> (forall (e :: Effects). () => Handle e -> Eff (e :& es) r) -> Eff es r
+ Bluefin.System.IO: withFile :: forall (e1 :: Effects) (es :: Effects) r. e1 <: es => IOE e1 -> FilePath -> IOMode -> (forall (e :: Effects). () => Handle e -> Eff (e :& es) r) -> Eff es r
- Bluefin.Writer: tell :: forall (e :: Effects) (es :: Effects) w. e :> es => Writer w e -> w -> Eff es ()
+ Bluefin.Writer: tell :: forall (e :: Effects) (es :: Effects) w. e <: es => Writer w e -> w -> Eff es ()

Files

CHANGELOG.md view
@@ -1,3 +1,12 @@+# 0.5.1.0++* Add `<:` type synonym for `:>`++  It is suggested you switch your uses of `:>` to `<:` because it is a+  "subset" like constraint and the latter looks more like a subset+  symbol.  The former may be deprecated and then removed in future+  versions.+ # 0.5.0.0  * Fix dodgy `Bluefin.Primitive.primitive` implementation
bluefin.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               bluefin-version:            0.5.0.0+version:            0.5.1.0 license:            MIT license-file:       LICENSE author:             Tom Ellis
src/Bluefin.hs view
@@ -716,7 +716,7 @@     -- pattern which looks like     --     -- @-    -- (e1 :> es, ...) -> \<Handle\> e1 -> ... -> Eff es r+    -- (e1 \<: es, ...) -> \<Handle\> e1 -> ... -> Eff es r     -- @     --     -- Here @\<Handle\>@ could be, for example, @State Int@,@@ -743,9 +743,9 @@     -- Finally, let's look at the constraints.  They are what tie     -- together the effect tags of the arguments to the effect tag of     -- the result.  For every argument effect tag @en@ we have a-    -- constraint @en :> es@.  That tells us the that effect handle+    -- constraint @en \<: es@.  That tells us the that effect handle     -- with tag @en@ is allowed to be used within the effectful-    -- computation.  If we didn't have the @e1 :> es@ constraint, for+    -- computation.  If we didn't have the @e1 \<: es@ constraint, for     -- example, that would tell us that the @State Int e1@ isn't     -- actually used anywhere in the computation.     --@@ -754,7 +754,7 @@     --     -- @     -- incrementReadLine ::-    --   (e1 :> es, e2 :> es, e3 :> es) =>+    --   (e1 \<: es, e2 \<: es, e3 \<: es) =>     --   State Int e1  ->     --   Exception String e2  ->     --   IOE e3 ->
src/Bluefin/CloneableHandle.hs view
@@ -22,7 +22,7 @@     --     -- @     -- bluefinRace ::-    --   ('CloneableHandle' h, e1 :> es) =>+    --   ('CloneableHandle' h, e1 \<: es) =>     --   t'Bluefin.IO.IOE' e1 ->     --   h es ->     --   (forall e. IOE e -> h e -> t'Bluefin.Eff.Eff' e r) ->
src/Bluefin/Compound.hs view
@@ -13,7 +13,7 @@     -- @     -- newtype Counter1 e = MkCounter1 ('Bluefin.State.State' Int e)     ---    -- incCounter1 :: (e :> es) => Counter1 e -> 'Bluefin.Eff.Eff' es ()+    -- incCounter1 :: (e \<: es) => Counter1 e -> 'Bluefin.Eff.Eff' es ()     -- incCounter1 (MkCounter1 st) = 'Bluefin.State.modify' st (+ 1)     --     -- runCounter1 ::@@ -55,7 +55,7 @@     -- @     -- data Counter2 e1 e2 = MkCounter2 ('Bluefin.State.State' Int e1) ('Bluefin.Exception.Exception' () e2)     ---    -- incCounter2 :: (e1 :> es, e2 :> es) => Counter2 e1 e2 -> 'Bluefin.Eff.Eff' es ()+    -- incCounter2 :: (e1 \<: es, e2 \<: es) => Counter2 e1 e2 -> 'Bluefin.Eff.Eff' es ()     -- incCounter2 (MkCounter2 st ex) = do     --   count <- 'Bluefin.State.get' st     --   when (count >= 10) $@@ -103,7 +103,7 @@     -- @     -- data Counter3 e = MkCounter3 ('Bluefin.State.State' Int e) ('Bluefin.Exception.Exception' () e)     ---    -- incCounter3 :: (e :> es) => Counter3 e -> Eff es ()+    -- incCounter3 :: (e \<: es) => Counter3 e -> Eff es ()     -- incCounter3 (MkCounter3 st ex) = do     --   count <- 'Bluefin.State.get' st     --   when (count >= 10) $@@ -148,12 +148,12 @@     -- @     -- newtype Counter3B e = MkCounter3B ('Bluefin.IO.IOE' e)     ---    -- incCounter3B :: (e :> es) => Counter3B e -> 'Bluefin.Eff.Eff' es ()+    -- incCounter3B :: (e \<: es) => Counter3B e -> 'Bluefin.Eff.Eff' es ()     -- incCounter3B (MkCounter3B io) =     --   effIO io (putStrLn "You tried to increment the counter")     --     -- runCounter3B ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   IOE e1 ->     --   (forall e. Counter3B e -> Eff (e :& es) r) ->     --   Eff es r@@ -193,7 +193,7 @@     -- data Counter4 e     --   = MkCounter4 ('Bluefin.State.State' Int e) ('Bluefin.Exception.Exception' () e) ('Bluefin.Stream.Stream' String e)     ---    -- incCounter4 :: (e :> es) => Counter4 e -> Eff es ()+    -- incCounter4 :: (e \<: es) => Counter4 e -> Eff es ()     -- incCounter4 (MkCounter4 st ex y) = do     --   count <- 'Bluefin.State.get' st     --@@ -205,13 +205,13 @@     --     --   'Bluefin.State.put' st (count + 1)     ---    -- getCounter4 :: (e :> es) => Counter4 e -> String -> Eff es Int+    -- getCounter4 :: (e \<: es) => Counter4 e -> String -> Eff es Int     -- getCounter4 (MkCounter4 st _ y) msg = do     --   yield y msg     --   get st     --     -- runCounter4 ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Stream String e1 ->     --   (forall e. Counter4 e -> Eff (e :& es) r) ->     --   Eff es Int@@ -261,17 +261,17 @@     --   deriving (Generic)     --   deriving (Handle) via 'OneWayCoercibleHandle' Counter5     ---    -- instance (e :> es) => 'OneWayCoercible.OneWayCoercible' (Counter5 e) (Counter5 es) where+    -- instance (e \<: es) => 'OneWayCoercible.OneWayCoercible' (Counter5 e) (Counter5 es) where     --   oneWayCoercibleImpl = 'OneWayCoercible.gOneWayCoercible'     ---    -- incCounter5 :: (e :> es) => Counter5 e -> Eff es ()+    -- incCounter5 :: (e \<: es) => Counter5 e -> Eff es ()     -- incCounter5 e = incCounter5Impl ('mapHandle' e)     ---    -- getCounter5 :: (e :> es) => Counter5 e -> String -> Eff es Int+    -- getCounter5 :: (e \<: es) => Counter5 e -> String -> Eff es Int     -- getCounter5 e msg = getCounter5Impl (mapHandle e) msg     --     -- runCounter5 ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Stream String e1 ->     --   (forall e. Counter5 e -> Eff (e :& es) r) ->     --   Eff es Int@@ -333,19 +333,19 @@     --   deriving (Generic)     --   deriving (Handle) via 'OneWayCoercibleHandle' Counter6     ---    -- instance (e :> es) => 'OneWayCoercible.OneWayCoercible' (Counter6 e) (Counter6 es) where+    -- instance (e \<: es) => 'OneWayCoercible.OneWayCoercible' (Counter6 e) (Counter6 es) where     --   oneWayCoercibleImpl = 'OneWayCoercible.gOneWayCoercible'     ---    -- incCounter6 :: (e :> es) => Counter6 e -> Eff es ()+    -- incCounter6 :: (e \<: es) => Counter6 e -> Eff es ()     -- incCounter6 e = incCounter6Impl (mapHandle e)     ---    -- getCounter6 :: (e :> es) => Counter6 e -> String -> Eff es Int+    -- getCounter6 :: (e \<: es) => Counter6 e -> String -> Eff es Int     -- getCounter6 (MkCounter6 _ st y) msg = do     --   yield y msg     --   get st     --     -- runCounter6 ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Stream String e1 ->     --   (forall e. Counter6 e -> Eff (e :& es) r) ->     --   Eff es Int@@ -408,7 +408,7 @@     -- -- can't derive the @OneWayCoercible@ instance with     -- -- 'OneWayCoercible.gOneWayCoercible' so instead we use 'oneWayCoercibleTrustMe'.     ---    -- instance (e :> es) => 'OneWayCoercible' (Counter7 e) (Counter7 es) where+    -- instance (e \<: es) => 'OneWayCoercible' (Counter7 e) (Counter7 es) where     --   oneWayCoercibleImpl = oneWayCoercibleTrustMe $ \\c ->     --     MkCounter7     --       { incCounter7Impl = \\ex -> 'useImplUnder' (incCounter7Impl c ex),@@ -417,16 +417,16 @@     --       }     --     -- incCounter7 ::-    --   (e :> es, e1 :> es) => Counter7 e -> Exception () e1 -> Eff es ()+    --   (e \<: es, e1 \<: es) => Counter7 e -> Exception () e1 -> Eff es ()     -- incCounter7 e ex = 'makeOp' (incCounter7Impl ('mapHandle' e) (mapHandle ex))     ---    -- getCounter7 :: (e :> es) => Counter7 e -> String -> Eff es Int+    -- getCounter7 :: (e \<: es) => Counter7 e -> String -> Eff es Int     -- getCounter7 (MkCounter7 _ st y) msg = do     --   yield y msg     --   get st     --     -- runCounter7 ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Stream String e1 ->     --   (forall e. Counter7 e -> Eff (e :& es) r) ->     --   Eff es Int@@ -504,7 +504,7 @@     -- -- 'OneWayCoercible.gOneWayCoercible' instead we use 'oneWayCoercibleTrustMe'.     --     -- instance-    --   (e :> es) =>+    --   (e \<: es) =>     --   OneWayCoercible (DynamicReader r e) (DynamicReader r es)     --   where     --   oneWayCoercibleImpl = oneWayCoercibleTrustMe $ \\h ->@@ -514,13 +514,13 @@     --       }     --     -- askLR ::-    --   (e :> es) =>+    --   (e \<: es) =>     --   DynamicReader r e ->     --   Eff es r     -- askLR c = 'makeOp' (askLRImpl ('mapHandle' c))     --     -- localLR ::-    --   (e :> es) =>+    --   (e \<: es) =>     --   DynamicReader r e ->     --   (r -> r) ->     --   Eff es a ->@@ -557,13 +557,13 @@     --   deriving (Generic)     --   deriving (Handle) via 'OneWayCoercibleHandle' FileSystem     ---    -- instance (e :> es) => 'OneWayCoercible.OneWayCoercible' (FileSystem e) (FileSystem es) where+    -- instance (e \<: es) => 'OneWayCoercible.OneWayCoercible' (FileSystem e) (FileSystem es) where     --   oneWayCoercibleImpl = 'OneWayCoercible.gOneWayCoercible'     ---    -- readFile :: (e :> es) => FileSystem e -> FilePath -> Eff es String+    -- readFile :: (e \<: es) => FileSystem e -> FilePath -> Eff es String     -- readFile fs filepath = readFileImpl ('mapHandle' fs) filepath     ---    -- writeFile :: (e :> es) => FileSystem e -> FilePath -> String -> Eff es ()+    -- writeFile :: (e \<: es) => FileSystem e -> FilePath -> String -> Eff es ()     -- writeFile fs filepath contents =     --   writeFileImpl (mapHandle fs) filepath contents     -- @@@ -574,7 +574,7 @@     --     -- @     -- runFileSystemPure ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Exception String e1 ->     --   [(FilePath, String)] ->     --   (forall e2. FileSystem e2 -> Eff (e2 :& es) r) ->@@ -601,7 +601,7 @@     -- @     -- runFileSystemIO ::     --   forall e1 e2 es r.-    --   (e1 :> es, e2 :> es) =>+    --   (e1 \<: es, e2 \<: es) =>     --   Exception String e1 ->     --   IOE e2 ->     --   (forall e. FileSystem e -> Eff (e :& es) r) ->@@ -616,7 +616,7 @@     --           \\filepath -> adapt . Prelude.writeFile filepath     --       }     --   where-    --     adapt :: (e1 :> ess, e2 :> ess) => IO a -> Eff ess a+    --     adapt :: (e1 \<: ess, e2 \<: ess) => IO a -> Eff ess a     --     adapt m =     --       effIO io (Control.Exception.try @IOException m) >>= \\case     --         Left e -> 'Bluefin.Exception.throw' ex (show e)@@ -627,7 +627,7 @@     -- does some file system operations.     --     -- @-    -- action :: (e :> es) => FileSystem e -> Eff es String+    -- action :: (e \<: es) => FileSystem e -> Eff es String     -- action fs = do     --   file <- readFile fs "\/dev\/null"     --   when (length file == 0) $ do
src/Bluefin/DslBuilder.hs view
@@ -185,7 +185,7 @@     --   deriving t'Bluefin.Compound.Generic'     --   deriving t'Bluefin.Compound.Handle' via t'Bluefin.Compound.OneWayCoercibleHandle' ArenaH     ---    -- instance (e :> es) => 'Bluefin.Compound.OneWayCoercible' (ArenaH e) (ArenaH es) where+    -- instance (e \<: es) => 'Bluefin.Compound.OneWayCoercible' (ArenaH e) (ArenaH es) where     --   'Bluefin.Compound.oneWayCoercibleImpl' = 'Bluefin.Compound.gOneWayCoercible'     -- @     --@@ -248,7 +248,7 @@     --   deriving t'Bluefin.Compound.Generic'     --   deriving t'Bluefin.Compound.Handle' via t'Bluefin.Compound.OneWayCoercibleHandle' InstructionsH     ---    -- instance (e :> es) => t'Bluefin.Compound.OneWayCoercible' (InstructionsH e) (InstructionsH es) where+    -- instance (e \<: es) => t'Bluefin.Compound.OneWayCoercible' (InstructionsH e) (InstructionsH es) where     --   oneWayCoercibleImpl = 'Bluefin.Compound.gOneWayCoercible'     -- @     --
src/Bluefin/Eff.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}+ module Bluefin.Eff   ( -- * 'Eff' monad     Eff,@@ -22,6 +24,7 @@     -- * Effect tracking     Effects,     (:>),+    type (<:),     (:&),   ) where
src/Bluefin/GadtEffect.hs view
@@ -32,7 +32,7 @@     --     -- @     -- instance-    --   (e :> es) =>+    --   (e \<: es) =>     --   t'Bluefin.Compound.OneWayCoercible' ('GadtEffect' FileSystem r e) (GadtEffect FileSystem r es)     --   where     --   'Bluefin.Compound.oneWayCoercibleImpl' = 'oneWayCoercibleGadtEffectTrustMe' $ \\case@@ -51,7 +51,7 @@     --     -- @     -- readFile ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   'Send' FileSystem e1 ->     --   FilePath ->     --   Eff es String@@ -59,7 +59,7 @@     --   'send' fc (ReadFile path)     --     -- writeFile ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Send FileSystem e1 ->     --   FilePath ->     --   String ->@@ -68,7 +68,7 @@     --   send fc (WriteFile path content)     --     -- trace ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   Send FileSystem e1 ->     --   String ->     --   Eff es r ->@@ -96,7 +96,7 @@     --     -- runFileSystem ::     --   forall es e1 e2 r.-    --   (e1 :> es, e2 :> es) =>+    --   (e1 \<: es, e2 \<: es) =>     --   t'Bluefin.IO.IOE' e1 ->     --   t'Bluefin.Exception.Exception' t'Control.Exception.IOException' e2 ->     --   (forall e. 'Send' FileSystem e -> Eff (e :& es) r) ->@@ -114,7 +114,7 @@     --   where     --     -- If you don't want to write this signature you can use     --     -- {-# LANGUAGE NoMonoLocalBinds #-}-    --     adapt :: (e1 :> es', e2 :> es') => IO r' -> Eff es' r'+    --     adapt :: (e1 \<: es', e2 \<: es') => IO r' -> Eff es' r'     --     adapt m = 'Bluefin.IO.rethrowIO' io ex (effIO io m)     -- @ @@ -137,7 +137,7 @@     --     -- @     -- instance-    --   (e :> es) =>+    --   (e \<: es) =>     --   t'Bluefin.Compound.OneWayCoercible' ('GadtEffect' E r e) (GadtEffect E r es)     --   where     --   'Bluefin.Compound.oneWayCoercibleImpl' = 'oneWayCoercibleGadtEffectTrustMe' $ \\case@@ -155,7 +155,7 @@     --     -- @     -- runE ::-    --   (e1 :> es) =>+    --   (e1 \<: es) =>     --   IOE e1 ->     --   (forall e. Send E e -> Eff (e :& es) r) ->     --   Eff es r@@ -170,7 +170,7 @@     --     -- @     -- augmentOp2Interpret ::-    --   (e1 :> es, e2 :> es) =>+    --   (e1 \<: es, e2 \<: es) =>     --   IOE e2 ->     --   Send E e1 ->     --   (forall e. Send E e -> Eff (e :& es) r) ->@@ -184,7 +184,7 @@     --     -- @     -- augmentOp2Interpose ::-    --   (e1 :> es, e2 :> es) =>+    --   (e1 \<: es, e2 \<: es) =>     --   IOE e2 ->     --   t'Bluefin.HandleReader.HandleReader' (Send E) e1 ->     --   Eff es r ->
src/Bluefin/Prim.hs view
@@ -7,7 +7,7 @@ --   deriving (Handle) via OneWayCoercibleHandle ExAndPrim --   deriving stock (Generic) ----- instance (e :> es) => OneWayCoercible (ExAndPrim e) (ExAndPrim es) where+-- instance (e \<: es) => OneWayCoercible (ExAndPrim e) (ExAndPrim es) where --   oneWayCoercibleImpl = gOneWayCoercible -- -- -- Define a monad M containing the Prim handle@@ -16,7 +16,7 @@ -- -- -- Define a way of running M -- runM ::---   (e1 :> es, e2 :> es) =>+--   (e1 \<: es, e2 \<: es) => --   Exception String e1 -> --   P.Prim e2 -> --   M es es r ->@@ -25,7 +25,7 @@ --   runReaderT m (MkExAndPrim (mapHandle ex) (mapHandle prim)) -- -- -- Give M a PrimMonad instance--- instance (e :> es) => PrimMonad (M e es) where+-- instance (e \<: es) => PrimMonad (M e es) where --   type PrimState (M e es) = P.PrimStateEff e --   primitive f = --     MkM (ReaderT (\\(MkExAndPrim _ prim) -> P.'primitive' prim f))