Claus Reinke <[EMAIL PROTECTED]> wrote: > to illustrate why some of us are concerned about this extension, > a few examples might help.
Claus, I've been saving your message in order to respond to it when I have the time to look over it in detail. I don't think there will be forthcoming answers from me, though. Ultimately, it may just have to come down to implementing the extension, making it available as an extension to GHC and perhaps other Haskell compilers, and then learning from people's experience. If there is a really good syntax that avoids the need for language changes, that would be great. If there's one that's clearly good enough and pops up before I finish this, then I may even abort the work. As it stands, though, I'm just not sure how to evaluate ideas without language changes against an alternative that doesn't exist. This is especially true when we're talking about non-quantifiable ideas like convenience, readability, and intuitiveness. As such, I'm happy to pursue the language change route, so that we'll have a real implementation and a fully developed idea, instead of a theory to discuss. I suspect it will then be more productive to talk about the options, such as whether the language change is really needed or beneficial. Neil and I just discussed some of the semantic issues you raise here in another subthread. Some of them are not quite as intuitive as I'd like, but the meaning is at least well-defined. As for this thread, yes I agree with Simon that it's necessary to choose your "option c" and tie any new syntax rather tightly to the 'do' keyword; anything else involves becoming a mind-reader. > if (c), then the following are no longer equivalent > > 1. return ... > 2. do return ... Yes, that is true. > if you weren't, here's > a quick question: we've already seen the left- and right-identity > laws in danger, so what about associativity? > > do { do { a; b}; c } > > is still the same as > > do { a; do { b; c } } > > yes? no? perhaps? sometimes? how long did it take you? I'm not entirely sure I understand the point here. The monad laws are defined in terms of >>= and return. They have never had anything to do with do, let, or <-. All of the monad laws still hold. -- Chris Smith _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe