The report has the following example:
import IO main = do hSetBuffering stdout NoBuffering putStr "Enter an integer: " x1 <- readNum putStr "Enter another integer: " x2 <- readNum putStr ("Their sum is " ++ show (x1+x2) ++ "\n") where readNum :: IO Integer -- Need a type signature for -- readLn to avoid ambiguity readNum = readLn However, I believe that due to the monomorphism restriction and type defaulting the type signature isn't actually required. The next example: import IO import System main = do [f1,f2] <- getArgs h1 <- openFile f1 ReadMode h2 <- openFile f2 WriteMode copyFile h1 h2 hClose h1 hClose h2 copyFile h1 h2 = do eof <- hIsEOF h1 if eof then return () else do c <- hGetChar h1 hPutChar h2 (toUpper c) copyFile h1 h2 also requires Char to be imported for toUpper, as does the final example import System main = do [f1,f2] <- getArgs s <- readFile f1 writeFile f2 (map toUpper s) The section also doesn't follow the convention of the portable part of the module definition being given at the end of the section. Thanks Ian _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell