bluefin-0.0.0.0
Safe HaskellNone
LanguageHaskell2010

Bluefin.EarlyReturn

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 Source #

Arguments

:: forall r (es :: Effects). (forall (er :: Effects). EarlyReturn r er -> Eff (er :& 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 Source #

Arguments

:: forall (er :: Effects) (es :: Effects) r a. er :> es 
=> EarlyReturn r er 
-> 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"