accessible layout proposal?

I am in love with this proposal: http://www.haskell.org/haskellwiki/Accessible_layout_proposal However, after some Google searching and contacting its original author, I have still not found any implementation or project to implement it. Are there any I'm missing? And, if not, who would be willing to help undertake a project to patch ghc to support it? Alternatively, you can try to talk me out of liking the proposal so much, but that is much less likely to work. Jimmy Hartzell

On Tue, Sep 22, 2009 at 10:01 AM, Jimmy Hartzell
I am in love with this proposal: http://www.haskell.org/haskellwiki/Accessible_layout_proposal
I'm not sure whether I like the idea in general or not. It looks a bit odd. The suggestion on the talk page ( http://www.haskell.org/haskellwiki/Talk:Accessible_layout_proposal ) might be preferable, although I wonder about the implications. For example, what should (#) be parsed as?

On Sep 22, 2009, at 8:01 PM, Jimmy Hartzell wrote:
I am in love with this proposal: http://www.haskell.org/haskellwiki/Accessible_layout_proposal
I hadn't read it before. Now that I have, I really do not like it. "Syntactic sugar causes cancer of the semicolon" as Alan Perlis once said, and to my taste this proposal definitely counts as cancer of the semicolon. In effect, its purpose is to overload vertical white space. Any time that you have something where you think you need this, it's likely that a better solution is to break what you are doing into smaller pieces.

http://www.haskell.org/haskellwiki/Accessible_layout_proposal
I see two main problems with such a proposal (other than the particular details of the syntax chosen for it): - layout is not very well supported by most of the text editors, contrary to parens/brackets/braces. - more importantly: it introduces a new syntax that doesn't replace the old one, so it makes the language more complex. Compare that with the layout for `do', `let', `where' and `case' which is fine because it's used 99% of the time and the alternative syntax is the same for each one of them (simply add {;;;}). So I'd be OK with a switch from data foo = Toto | Tata Int | Titi to data foo = { Toto ; Tata Int ; Titi } and data foo = Toto Tata Int Titi and similarly for module import lists, but only if it comes with a deprecation of the current syntax. Stefan
participants (4)
-
Jimmy Hartzell
-
Raynor Vliegendhart
-
Richard O'Keefe
-
Stefan Monnier