| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Bluefin.Capability.AskCapability
Description
AskCapability is like Ask, generalized to
work for arbitrary Handles. localCapability
locally overrides the value of a capability in a well-scoped way. The
original capability will be restored when you exit the localCapability
block regardless of whether the exit was normal or via an
exception.
AskCapability supports functionality similiar to effectful's
interpose
and polysemy's
intercept,
that is, locally augmenting an effect with new behaviors. If you
want to do the same in Bluefin you may want to start with
Bluefin.GadtEffect..interpose
Synopsis
- data AskCapability (h :: Effects -> Type) (e :: Effects)
- runAskCapability :: forall (e1 :: Effects) (es :: Effects) h r. (e1 <: es, Handle h) => h e1 -> (forall (e :: Effects). AskCapability h e -> Eff (e :& es) r) -> Eff es r
- asksCapability :: forall (e1 :: Effects) (es :: Effects) h r. (e1 <: es, Handle h) => AskCapability h e1 -> (forall (e :: Effects). h e -> Eff (e :& es) r) -> Eff es r
- localCapability :: forall (e :: Effects) (es :: Effects) h r. (e <: es, Handle h) => AskCapability h e -> (h es -> h es) -> Eff es r -> Eff es r
- askCapability :: forall (e :: Effects) (es :: Effects) h. (e <: es, Handle h) => AskCapability h e -> Eff es (h es)
Handle
data AskCapability (h :: Effects -> Type) (e :: Effects) #
Instances
| e <: es => OneWayCoercible (AskCapability h e :: Type) (AskCapability h es :: Type) | |
Defined in Bluefin.Internal Methods oneWayCoercibleImpl :: OneWayCoercibleD (AskCapability h e) (AskCapability h es) # | |
| Handle (AskCapability h) | |
Defined in Bluefin.Internal Methods handleImpl :: HandleD (AskCapability h) # | |
| CloneableHandle h => CloneableHandle (AskCapability h) | |
Defined in Bluefin.Internal.CloneableHandle Methods cloneableHandleImpl :: CloneableHandleD (AskCapability h) | |
Handlers
runAskCapability :: forall (e1 :: Effects) (es :: Effects) h r. (e1 <: es, Handle h) => h e1 -> (forall (e :: Effects). AskCapability h e -> Eff (e :& es) r) -> Eff es r #
Effectful operations
asksCapability :: forall (e1 :: Effects) (es :: Effects) h r. (e1 <: es, Handle h) => AskCapability h e1 -> (forall (e :: Effects). h e -> Eff (e :& es) r) -> Eff es r #
localCapability :: forall (e :: Effects) (es :: Effects) h r. (e <: es, Handle h) => AskCapability h e -> (h es -> h es) -> Eff es r -> Eff es r #
Deprecated versions
askCapability :: forall (e :: Effects) (es :: Effects) h. (e <: es, Handle h) => AskCapability h e -> Eff es (h es) #