Le 06/08/2013 14:47, Jake McArthur a écrit :
... But IO actions *are* pure values. What side effects do they have? None! /You can do whatever you want with them/ with no harmful effects in any Haskell expression. They only special thing about them is that they have a run function

As I said,  --
*Now Is The Time*  --
[[choose your reference of this Original Expression; perhaps the albums of Alanis Morissette or that of Jeff Lorber...]]

... to discuss the Purity. Go ahead and good luck.

Unfortunately I belong to a Cretacean generation, for whom the Referential Transparency means something, so I don't believe you, Jake. I am not saying that you are wrong. I say that calling an action a pure /value/ is almost meaningless.

1. First, it is not true that you can do with, say, (printStr "Ho!" ) whatever you want. In fact, you can do almost nothing with it. You can transport it "as such", and you can use it as the argument of (>>=).

2. This is the only way you can evaluate your "pure value", and because of the monadic chaining, you cannot do it twice, you cannot "re-evaluate" it. You know all this as well as I do, perhaps better. That's why the "purity" here is dubious (although, unless I am mistaken, all functional constructs are considered "pure" by Wadler...).

3. Brandon Albery is (in my eyes) right:
what's impure about lifting 5 into Maybe or []? `pure` feels IO-targeted.

A list, such as (return 5) in the List/Nondet Monad may be treated as a normal data item. But a IO action, or a IoRef mutable reference -- not really, they are Magic. If you claim that Magic is Pure, I abandon the ring. For me the Magical entities (i.e., the entities which are controlled by some layers UNDER the one YOU control) are impure, since there is no operational definition of purity for them. "No side effects"? Sure, if you don't do anything with it. Even the most horrible Devil is pure. Unless you call it...


Jerzy Karczmarczuk


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to