import Control.Monad import Control.Monad.Cont forever x = x >> forever x processChar k = do c <- liftIO getChar if c == ' ' then k c else liftIO (putStr [c]) demo = callCC (\k -> forever (processChar k)) demo' :: IO Char demo' = runContT demo return