
Hi, I have this in a .hs file and it works fine. That is I see lines printed to the screen when the .hs file is loaded and run from ghci. main = do file <- readFile "poem.txt" mapM_ putStrLn (lines file) Experimenting at the ghci command line with let f = readFile “poem.txt” the above is fine. But doing lines f gives <interactive>:52:7: Couldn't match type ‘IO String’ with ‘[Char]’ Expected type: String Actual type: IO String In the first argument of ‘lines’, namely ‘f’ In the expression: lines f In my simplistic beginners way I think this is because when I run main = do … everything is or is within an ‘impure’ area but at ghci command line it is not and I’m mixing pure/impure functions. So my questions are 1. Is this simplistic view any where near correct? 2. How can I progress at the command line in ghci? Many thanks Mike