[Haskell-beginners] A basic misunderstanding of how to program with IO

Isaac Dupree ml at isaac.cedarswampstudios.org
Sun May 9 18:13:48 EDT 2010


On 05/08/10 11:55, Ken Overton wrote:
> Sorry for such a beginner-y question, but is there a way to make a function like:
>
>      interact :: String ->  Resp
>      interact txt =
> 		putStrLn txt
> 		rsp<- getLine
> 		return parseResp rsp
>
>      parseResp :: String ->  Resp
>
> Or is that simply a wrong way of programming in Haskell with IO?

I think, yes your function looks close to typical Haskell, you're just 
missing a "do", a pair of parentheses, and an "IO":

     interact :: String -> IO Resp
     interact txt = do
		putStrLn txt
		rsp <- getLine
		return (parseResp rsp)

     parseResp :: String -> Resp

Does that make sense to you?  Would you like more detailed explanation 
of the changes?

-Isaac


More information about the Beginners mailing list