bluefin-0.6.0.0: The Bluefin effect system
Safe HaskellNone
LanguageHaskell2010

Bluefin.EarlyReturn

Description

This is an old interface and will be deprecated in the future. You are encouraged to use Bluefin.Capability.ReturnEarly instead.

Synopsis

Documentation

Early return 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.

Handle

Handlers

withEarlyReturn #

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, withEarlyReturn installs an exception handler for an exception of type r.

>>> 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"

Effectful operations

returnEarly #

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"