[Haskell-cafe] Why is $ right associative instead
of leftassociative?
Chris Kuklewicz
haskell at list.mightyreason.com
Sat Feb 4 18:34:41 EST 2006
Brian Hulley wrote:
> Jared Updike wrote:
>>> [a,b,c ; tail] === a :: b :: c :: tail --
>>> where ::
>>
>> How is [a,b,c ; tail] simpler, clearer or less typing than
>> a:b:c:tail ? I think that the commas and semicolons are easy to
>> confuse.
>
> It seems strange that you can write [a,b,c] with a nice list sugar but
> if you want to include a tail you have to switch to the infix notation
> using list cons. Prolog for example allows you to write [a,b,c|Tail] but
> neither Haskell nor ML allows this. In Haskell, | is used to introduce a
> list comprehension so I was just trying to find a replacement symbol for
> when you want the equivalent of the Prolog list sugar so that you
> wouldn't be forced to use infix notation.
>
> All this was not to replace a:b:c:tail but was to replace a::b::c::tail
> so that : could be used for type annotations instead.
>
There is the .. operator which is unused in pattern matching contexts. So maybe
case [1,3..] of
[a,b,c,tail..] -> tail -- I like this one, the ..] catches the eye better
[a,b,c,..tail] -> tail -- I think this is less clear at a glance
[a,b,c,..tail..] -> tail -- I expect no one to like this
[a,b,c,_..] -> [a,b,c] -- Not the best looking thing I've ever seen
[a,b,c,.._] -> [a,b,c] -- ditto
[a,b,c,.._..] -> [a,b,c] -- ick
But this implies [a,b,c,[]..] is the same as [a,b,c] and [a,b,c,[d,e,f]..] is
the same as [a,b,c,d,e,f] and [a,b,c,[d,e,f..]..] is [a,b,c,d,e,f..]
Wacky.
More information about the Haskell-Cafe
mailing list