[Haskell-beginners] A basic misunderstanding of how to program
with IO
Ken Overton
koverton at lab49.com
Sat May 8 12:20:12 EDT 2010
Thanks; I guess my 'problem' is that I naturally gravitate to a function that returns *the result of the interaction* rather than IO, but that seems impossible anywhere IO is used.
So looking at the 'real' interact function, I guess the Haskell way is to pass in my function that acts on the data that was read. I guess that makes sense as then I can separate all my 'action' code from IO code. Is that a reasonable understanding?
Sorry if this was so obvious; is this kind of pattern documented in greater detail somewhere? I haven't noticed anything yet, but maybe I've been hoogling the wrong names.
--kov
________________________________________
From: Ozgur Akgun [ozgurakgun at gmail.com]
Sent: Saturday, May 08, 2010 12:09 PM
To: Ken Overton
Cc: beginners at haskell.org
Subject: Re: [Haskell-beginners] A basic misunderstanding of how to program with IO
I might have misunderstood you, but what about using the existing interact function: http://haskell.org/ghc/docs/6.12.1/html/libraries/base-4.2.0.0/Prelude.html#v:interact
And for your interact, since it is not in the IO monad, you cannot write such a function. [ don't tell him about the unsafePerformIO :) ]
I am sure you'll get better answers.
Best,
On 8 May 2010 16:55, Ken Overton <koverton at lab49.com<mailto:koverton at lab49.com>> 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?
Thanks (and apologies),
-- kov_______________________________________________
Beginners mailing list
Beginners at haskell.org<mailto:Beginners at haskell.org>
http://www.haskell.org/mailman/listinfo/beginners
--
Ozgur Akgun
More information about the Beginners
mailing list