
I wrote that post to point out the fuzziness that fuels many discussion
threads like this one. See also
http://conal.net/blog/posts/notions-of-purity-in-haskell/ and the comments.
I almost never find value in discussion about whether language X is
"functional", "pure", or even "referentially transparent", mainly because
those terms are used so imprecisely. In the notions-of-purity post, I
suggest another framing, as whether or not a language and/or collection of
data types is/are "denotative", to use Peter Landin's recommended
replacement for "functional", "declarative", etc. I included some quotes
and a link in that post. so people can track down what "denotative" means.
In my understanding, Haskell-with-IO is not denotative, simply because we
do not have a (precise/mathematical) model for IO. And this lack is by
design, as explained in the "toxic avenger" remarks in a comment on that
post.
I often hear explanations of what IO means (world-passing etc), but I don't
hear any consistent with Haskell's actual IO, which includes
nondeterministic concurrency. Perhaps the difficulties could be addressed,
but I doubt it, and I haven't seen claims pursued far enough to find out.
- Conal
On Thu, Dec 29, 2011 at 4:42 PM, Steve Horne
On 30/12/2011 00:16, Sebastien Zany wrote:
Steve Horne wrote:
I haven't seen this view explicitly articulated anywhere before
See Conal Elliott's blog post The C language is purely functionalhttp://conal.net/blog/posts/the-c-language-is-purely-functional .
Thanks - yes, that's basically the same point. More concise - so clearer, but not going into all the same issues - but still the same theme.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe