[Haskell-beginners] function to read file and return list of contents not compiling

Geoffrey Bays charioteer7 at gmail.com
Thu Feb 19 18:00:08 UTC 2015


Thanks. I played around some more with return and came up with this which
compiles fine:

readData :: String -> IO [String]
readData classNameP = do
    let fileName = classNameP ++ ".txt"
    contents <- readFile fileName
    return $ lines contents

Geoffrey

On Thu, Feb 19, 2015 at 12:25 PM, Sumit Sahrawat, Maths & Computing, IIT
(BHU) <sumit.sahrawat.apm13 at iitbhu.ac.in> wrote:

> The type should be IO [String]. You do IO, and it results in a list of
> Strings.
> Also, take a look at the following types:
>
>     contents :: String
>     lines :: String -> [String]
>
> Which means that,
>
> lines contents :: [String]
>
> But because you're dealing with a monad (IO in this case), this will not
> typecheck. You can convert a pure value to a monadic value using the return
> function:
>
>     return :: Monad m => a -> m a
>
> Not specific to IO, but all monads.
> Hope this helps.
>
> On 19 February 2015 at 22:47, Geoffrey Bays <charioteer7 at gmail.com> wrote:
>
>> Haskellers:
>>
>> I want to write a function that takes a class name and reads from a file
>> and then returns the
>> list of String of the file lines. I have experimented with various return
>> types, but GHC does not like any of them. Here is my function:
>>
>> readData :: String -> IO String   -- what type here??
>> readData classNameP = do
>>     let fileName = classNameP ++ ".txt"
>>     contents <- readFile fileName
>>     lines contents
>>
>> Not to complain, but this would not be difficult in any other language I
>> have tried, so I could use
>> some explanation. I suspect it has to do with understanding the IO Monad.
>>
>> Many Thanks
>>
>> Geoffrey
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>
>
> --
> Regards
>
> Sumit Sahrawat
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150219/ab4b61d1/attachment.html>


More information about the Beginners mailing list