Date: 2013-04-20 05:29 am (UTC)
winterkoninkje: shadowcrane (clean) (Default)
The problem is that monads are everywhere. Everything is an effect. I think it's a bit myopic to focus only on things like state, IO, and exceptions which model the blatantly effectful structure of imperative languages. (That's how DDC started out, btw.) Continuations are a perfectly good effect, and is part of the blatantly effectful structure of Scheme et al. Nondeterminism is a perfectly good effect, and is part of the blatantly effectful structure of logic programming. Things like unification and futures are also perfectly good effects; building futures into the language was essentially the whole selling point for Oz and AliceML! And of course laziness is a perfectly good effect. Not to mention Lindsey and Ryan's work on deterministic parallelism. Nor all the recent work on memory regions. ...

The problem, of course, is that monads do not compose. That is, in general we do not have that m (n a) is isomorphic to n (m a). This is a major problem that has been known for quite a while. Things like monad transformers give us a bit of compositionality, but they provably can't go far enough. There are a few other categorical goodies people have tried using to improve the compositionality/modularity aspect of things, but none of them appears to have been especially promising in the long run.

I don't have a reference for MacQueen's talk, alas. Oleg's rants include this one about Lazy IO and unsafeInterleaveIO, which was discussed to death on reddit recently, and his followup which follows my suggestion on reddit that really the problem already exists for unsafeInterleaveST. At this point, I'm not sure how worthwhile the reddit comments will be to sift through; there's a fair bit of nuhuh-ing and handwringing which doesn't make any intellectual progress on the actual issues that Oleg brings up. I do think, though, that the thread me and Lennart Augustsson had touches on some important issues at stake in this whole line of argumentation about referential transparency (and what we mean by RT, or what we want to mean by RT, and why RT isn't the be-all-and-end-all of programming).
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
Account name:
If you don't have an account you can create one now.
HTML doesn't work in the subject.


Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.



April 2013

14151617 181920

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 28th, 2017 05:43 pm
Powered by Dreamwidth Studios