[Haskell-cafe] Re: Why is $ right associative instead of leftassociative?

Aaron Denney wnoise at ofb.net
Sun Feb 5 12:30:51 EST 2006

On 2006-02-05, Brian Hulley <brianh at metamilk.com> wrote:
> Jon Fairbairn wrote:
>> Brian Hulley wrote:
>>> <snip>
>> Not exactly alone; I've felt it was wrong ever since we
>> argued about it for the first version of Haskell. ":" for
>> typing is closer to common mathematical notation.
>> But it's far too late to change it now.
>>> - it's just syntax after all
> Well I'm reconsidering my position that it's "just" syntax. Syntax does 
> after all carry a lot of semiotics for us humans, and if there are centuries 
> of use of ":" in mathematics that are just to be discarded because someone 
> in some other language decided to use it for list cons then I think it makes 
> sense to correct this.
> It would be impossible to get everything right first time, and I think the 
> Haskell committee did a very good job with Haskell, but just as there can be 
> bugs in a program, so there can also be bugs in a language design, and an 
> interesting question is how these can be addressed.
> For example, in the Prolog news group several years ago, there was also a 
> discussion about changing the list cons operator, because Prolog currently 
> uses "." which is much more useful for forming composite names - something 
> which I also think has become a de-facto inter-language standard. Although 
> there was much resistance from certain quarters, several implementations of 
> Prolog had in fact changed their list cons operator (list cons is hardly 
> ever needed in Prolog due to the [Head|Tail] sugar) to reclaim the dot for 
> its "proper" use.
> My final suggestion if anyone is interested is as follows:
> 1) Use ":" for types
> 2) Use "," instead of ";" in the block syntax so that all brace blocks can 
> be replaced by layout if desired (including record blocks)
> 3) Use ";" for list cons. ";" is already used for forming lists in natural 
> language, and has the added advantage that (on my keyboard at least) you 
> don't even need to press the shift key! ;-)
> Regards, Brian.

If anything, using ',' for block syntax and ';' for lists is backwards.
',' is used for generic lists in English, whereas ';' is used for
seperating statements or lists.

But I like the current syntax just fine.

Aaron Denney

More information about the Haskell-Cafe mailing list