Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Control.Dsl.Shift
Description
Documentation
>>>
:set -XTypeOperators
>>>
:set -XRebindableSyntax
>>>
import Prelude hiding ((>>), (>>=), return)
>>>
import Control.Dsl
>>>
import Control.Dsl.Return
>>>
import Control.Dsl.Yield
>>>
import Control.Dsl.Empty
>>>
:{
earlyGenerator :: Bool -> [String] !! Integer earlyGenerator earlyReturn = do Yield "inside earlyGenerator" when earlyReturn $ do Yield "early return" return 1 Yield "normal return" return 0 :}
>>>
:{
earlyGeneratorTest :: [String] earlyGeneratorTest = do Yield "before earlyGenerator" i <- Shift $ earlyGenerator True Yield "after earlyGenerator" Yield $ "the return value of earlyGenerator is " ++ show i empty :}
>>>
earlyGeneratorTest
["before earlyGenerator","inside earlyGenerator","early return","after earlyGenerator","the return value of earlyGenerator is 1"]