Benutzer:Dirk Huenniger/pre
Erscheinungsbild
import Control.Monad.Maybe
import Control.Monad.State
import Control.Monad
import Control.Monad.Trans.Class
main = runStateT ( runMaybeT . forever $ act ) "">>= putStrLn . snd
act :: MaybeT ( StateT String IO ) String
act= do x<- lift readAndUpdate
if x == "e"
then mzero
else return x
readAndUpdate :: ( StateT String IO ) String
readAndUpdate = lift getLine>>= updateState
updateState :: String -> ( StateT String IO ) String
updateState x = do y<- get
put ( y ++ "\n" ++ x )
return x
import Control.Monad.Maybe
import Control.Monad.State
import Control.Monad
import Control.Monad.Trans.Class
main2:: IO (Maybe String, String)
main2= (runStateT (runMaybeT (forever act))) ""
main= main2>>= putStrLn . snd
act::MaybeT (StateT String IO) String
act= (lift ((lift getLine)>>= (\x ->(get>>= \y-> put (y++"\n"++x))>>
return x)))>>= (\x->if x=="e" then mzero else MaybeT (return (Just x)))