[Haskell-cafe] Newbied question on IO Monad

Andrea Rossato mailing_list at istitutocolli.org
Tue Sep 12 08:42:24 EDT 2006


Il Tue, Sep 12, 2006 at 08:05:42AM -0400, Sara Kenedy ebbe a scrivere:
> Hello all,
> 
> update :: String -> String
> update sss = ...
> 
> 
> main = do writeFile "myFile.txt" sss
>                x <- callSystem "myFile.txt"
>                y <- openFile "result.txt" ReadMode
>                zzz <- hGetContents y
>                return zzz
> 
> 
> I know that function main returns IO String, function update returns
> String. And my purpose is to get the string zzz from main for the
> value return of function update. But I do not know which way I can do.

Did you mean something like this?

update :: String -> String
update sss = "Hi! " ++ sss

main = do writeFile "myFile.txt" $ update "What are you trying to do?"
	  x <- callSystem "myFile.txt"
          y <- openFile "result.txt" ReadMode
          zzz <- hGetContents y
          return zzz        

In this case main :: IO String so you will not see any output (quite
useless).
I'd suggest you to have a look at this tutorial that explain quite
well the IO Monad:
http://haskell.org/haskellwiki/IO_inside

Ciao
Andrea 


More information about the Haskell-Cafe mailing list