| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Bluefin.HandleReader
Description
HandleReader is like Reader, generalized to
work for arbitrary Handles. localHandle
locally overrides the value of a handle in a well-scoped way. The
original handle will be restored when you exit the localHandle
block regardless of whether the exit was normal or via an
exception.
HandleReader supports functionality similiar to effectful's
interpose and polysemy's
intercept, that is, locally augmenting an effect with
new behaviors.
Synopsis
- data HandleReader (h :: Effects -> Type) (e :: Effects)
- 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
- askHandle :: forall (e :: Effects) (es :: Effects) h. (e :> es, Handle h) => HandleReader h e -> Eff es (h es)
- 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
Handle
data HandleReader (h :: Effects -> Type) (e :: Effects) #
Instances
| Handle h => Handle (HandleReader h) | |
Defined in Bluefin.Internal Methods handleImpl :: HandleD (HandleReader h) # mapHandle :: forall (e :: Effects) (es :: Effects). e :> es => HandleReader h e -> HandleReader h es # | |
| CloneableHandle h => CloneableHandle (HandleReader h) | Cloning a |
Defined in Bluefin.Internal.CloneableHandle Methods | |