ajhc-0.8.0.1: lib/haskell-extras/System/IO/Continuation.hs
module System.IO.Continuation(IOCont(),newContinuation,callContinuation) where
import Jhc.JumpPoint
import Jhc.Hole
data IOCont s a = IOCont (Hole a) JumpPoint
newContinuation :: (forall s . IOCont s a -> IO b) -> (a -> IO b) -> IO b
newContinuation act cc = do
ref <- newHole
withJumpPoint__ $ \jp r -> case r of
False -> do act (IOCont ref jp)
True -> do readHole ref >>= cc
callContinuation :: IOCont s a -> a -> IO b
callContinuation (IOCont ref jp) x = do
fillHole ref x
jumpJumpPoint__ jp