I'm guessing in the .hs file, you have this in a do block? Something like:

foo = do
    contents <- readFile
    words contents

If so, the problem is the return type of `words`. Each line of the do block has to have an IO value, and words is a pure function. To lift its result into the monad, use the aptly-named `pure` function:

foo = do
    contents <- readFile
    pure $ words contents


On Tue, Mar 26, 2019, 8:35 PM Yugesh Kothari <kothariyugesh@gmail.com> wrote:
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?
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners