how to convert IO String to string---- still have questions

Lu Mudong mudong@hotmail.com
Sun, 24 Nov 2002 09:05:17 -0900


Thanks a lot for you guys' help.

I am very new to haskell and tried some methods you guys advised, doesn't 
seem to work, i think i didn't do it properly, here's my code and result, 
hope you can point out what's wrong. thanks!

my code:

myReadFile :: IO String
myReadFile = readFile "d:/hugs98/input.txt"

theString :: String
theString = do
	      s <- myReadFile
	      putStrLn s


the error message i got in hugs98

ERROR "D:\hugs98\parser.hs":16 - Type error in explicitly typed binding
*** Term           : theString
*** Type           : IO ()
*** Does not match : String









>From: Ashley Yakeley <ashley@semantic.org>
>To: "Ahn Ki-yung" <kyagrd@bawi.org>,"Haskell List" <haskell@haskell.org>
>Subject: Re: how to convert IO String to string
>Date: Fri, 22 Nov 2002 15:09:34 -0800
>
>At 2002-11-22 14:49, Ahn Ki-yung wrote:
>
> >'do' is a syntactic sugar of monadic operations.
> >The original form can be written as
> >
> >main = myReadFile >>= \s -> putStrLn s
>
>That's correct. In this case, the 's' has type String. So the IO String
>has been 'converted' into a String, but only within the context of the IO
>monad.
>
>I think ultimately everything is syntactic sugar.
>
>--
>Ashley Yakeley, Seattle WA
>
>_______________________________________________
>Haskell mailing list
>Haskell@haskell.org
>http://www.haskell.org/mailman/listinfo/haskell


_________________________________________________________________
Add photos to your messages with MSN 8. Get 2 months FREE*. 
http://join.msn.com/?page=features/featuredemail