SOE ex.3.1
putStr' :: String -> IO ()
putStr' [] = return ()
putStr' (c:cs) =
do putChar c
putStr' cs
getLine' :: IO String
getLine' =
do c <- getChar
if c == '\n'
then return ""
else
do s <- getLine'
return (c:s)