| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Bluefin.Capability.ReturnEarly
Synopsis
- type ReturnEarly = EarlyReturn
- withReturnEarly :: forall r (es :: Effects). (forall (e :: Effects). EarlyReturn r e -> Eff (e :& es) r) -> Eff es r
- returnEarly :: forall (e :: Effects) (es :: Effects) r a. e <: es => EarlyReturn r e -> r -> Eff es a
Documentation
Bluefin.ReturnEarly allows to define a block from which you can
return early. Early return is implemented as an exception, and
its API is just an alternate interface to exceptions.
Capability
type ReturnEarly = EarlyReturn #
Handlers
Arguments
| :: forall r (es :: Effects). (forall (e :: Effects). EarlyReturn r e -> Eff (e :& es) r) | |
| -> Eff es r | ͘ |
Run an Eff action with the ability to return early to this
point. In the language of exceptions, withReturnEarly installs
an exception handler for an exception of type r.
>>> runPureEff $ withReturnEarly $ \e -> do
for_ [1 .. 10] $ \i -> do
when (i >= 5) $
returnEarly e ("Returned early with " ++ show i)
pure "End of loop"
"Returned early with 5"
Effectful operations
Arguments
| :: forall (e :: Effects) (es :: Effects) r a. e <: es | |
| => EarlyReturn r e | |
| -> r | Return early to the handler, with this value. |
| -> Eff es a |
>>> runPureEff $ withEarlyReturn $ \e -> do
for_ [1 .. 10] $ \i -> do
when (i >= 5) $
returnEarly e ("Returned early with " ++ show i)
pure "End of loop"
"Returned early with 5"