
On 6/08/2013, at 9:28 PM, J. Stutterheim wrote:
That argument makes sense, although I find it a bit counter-intuitive still.
In discussions like this, I have never been able to discover any meaning for "intuitive" other than "familiar". Applying "pure" to an IO operation doesn't go against *my* intuition because Haskell has *trained* my intuition to see 'putStrLn "Hi"' as a pure value; it's not the thing itself that has effects, but its interpretation by an outer engine, just as my magnetic card key has by itself no power to open doors, but the magnetic reader that looks at the card _does_. I don't attribute agency to the card! I'm not arguing that my intuition is _right_, only that it is _different_. In particular, for anyone who has much experience with Haskell, "return" is almost the only name that could possibly be intuitive because that _is_ the name that is familiar. Haskell programmers who've got used to Applicative will also find "pure" intuitive, *because it is familiar*. I bet you can find an abundance of C programmers who think that "strcmp" is an intuitive name for string comparison (rather than compression, say).