| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Effectful.Labeled
Contents
Description
Labeled effects.
Any effect can be assigned multiple labels so you have more than one available simultaneously.
Since: 2.3.0.0
Synopsis
- newtype Labeled (label :: k) (e :: Effect) (a :: Type -> Type) b where
- runLabeled :: forall {k} (label :: k) (e :: Effect) (es :: [Effect]) a b. HasCallStack => (Eff (e ': es) a -> Eff es b) -> Eff (Labeled label e ': es) a -> Eff es b
- labeled :: forall {k} (label :: k) (e :: Effect) (es :: [Effect]) a. (HasCallStack, Labeled label e :> es) => Eff (e ': es) a -> Eff es a
Effect
newtype Labeled (label :: k) (e :: Effect) (a :: Type -> Type) b where Source #
Assign a label to an effect.
The constructor is for sending labeled operations of a dynamically dispatched effect to the handler:
>>>import Effectful.Dispatch.Dynamic
>>>:{data X :: Effect where X :: X m Int type instance DispatchOf X = Dynamic :}
>>>:{runPureEff . runLabeled @"x" (interpret_ $ \X -> pure 333) $ do send $ Labeled @"x" X :} 333
Constructors
| Labeled :: forall {k} (label :: k) (e :: Effect) (a :: Type -> Type) b. e a b -> Labeled label e a b | Since: 2.4.0.0 |
Instances
| type DispatchOf (Labeled label e) Source # | |
Defined in Effectful.Labeled | |
| data StaticRep (Labeled label e) Source # | |
Defined in Effectful.Labeled | |
Handlers
Arguments
| :: forall {k} (label :: k) (e :: Effect) (es :: [Effect]) a b. HasCallStack | |
| => (Eff (e ': es) a -> Eff es b) | The effect handler. |
| -> Eff (Labeled label e ': es) a | |
| -> Eff es b |
Run a Labeled effect with a given effect handler.