module Haskell4 where import Control.Applicative import Control.Monad exmon :: (Monad m, Num r) => m r -> m r -> m r exmon m1 m2 = do x <- m1 y <- m2 return $ x-y main = exmon (do putStr "?> " x <- getLine; return (read x :: Int)) (return 10)