[Haskell-beginners] IO String and String using readFile

Ian Denhardt ian at zenhack.net
Wed Mar 27 03:40:36 UTC 2019

It would help to see the complete source file, but I'll hazard a guess
you're doing something like:

main = do
    contents <- readFile "file.txt"
    words contents

At the GHCi prompt, each line can be any expression, and GHCi will
evaluate it and then display it. The two lines in your session aren't
really related.

In contrast, the do block in the source file expects the expression at
the end to be an IO action.

What do you want your program to do when you get to "words contents"?
display it? (If you want to display it, pass it to `print`).

Quoting Yugesh Kothari (2019-03-26 23:35:14)
>    Hi,�
>    I am trying to read data from a file.
>    When I do-
>    ghci> contents <- readFile "file.txt"
>    ghci> words contents
>    Then everything works.
>    The same thing when done in a .hs file gives an IO String vs [String]
>    error.
>    Why is that so?

More information about the Beginners mailing list