Conal Elliott wrote:
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.

Personally, the operational semantics given in SPJ's "Tackling the Awkward Squad" always struck me as an accurate model of how GHC performs IO.


Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com


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

Reply via email to