
The IO Monad provides a way to construct imperative programs in a pure
manner. For example,
print x = putStrLn (show x)
The function 'print' can be thought of as returning the same 'IO
computation' for same values of x.
Using the Monad interface, these instructions can be combined, like
main = getLine >>= print
which is equivalent to
main = do
x <- getLine
print x
Just like this, many IO values can be stitched together to create larger IO
values, which are descriptions of imperative programs as above.
It is pure, as the same 'computation' is returned for the same arguments.
On 26 April 2015 at 15:46, Jakob Holderbaum
Hi Shishir,
I explain it to myself as the nondeterministic behavior of the user which would lead to the impurity.
From the perspective of the programm, you just call a function without argument that returns a string. And every call has the potential to return something totally different depending on the users behavior.
So what you called input is not the input in the sense of an functional argument which is the foundation of the definition of purity.
I am myself an absolute beginner in Haskell and Functional Thinking so I hope to get some constructive feedback on my mental image of this situation.
Cheers Jakob
Hi,
Can someone please explain how IO operations do not fit in the pure category of mathematical function in that they have to be implemented via Monads.
For e.g. the getLine function has the type IOString and it reads the input from the user. Now as I see it the output of getLine will always be same if the input remain same (i.e. for input "X" getLine will always return "X" ) which is the constraint on mathematical functions.
Therefore I don't see why monads are necessary for implementing IO in
On 04/26/2015 11:59 AM, Shishir Srivastava wrote: pure
languages.
I can understand why Date and Random functions have be implemented via monads because their output will always change.
Thanks, Shishir
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Jakob Holderbaum, M.Sc. Embedded Software Engineer
0176 637 297 71 http://jakob.io/ http://jakob.io/mentoring/ hi@jakob.io @hldrbm
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Regards Sumit Sahrawat