[Haskell-cafe] Re: Syntax for lambda case proposal could be "\of"

Benjamin Franksen benjamin.franksen at bessy.de
Wed Aug 15 14:51:57 EDT 2007


Brian Hulley wrote:
> Stefan O'Rear wrote:
>> On Wed, Aug 15, 2007 at 06:58:40PM +0100, Duncan Coutts wrote:
>>   
>>> On Wed, 2007-08-15 at 10:50 -0700, Stefan O'Rear wrote:
>>>
>>>     
>>>> OTOH, your proposal provides (IMO) much more natural syntax for
>>>> multi-pattern anonymous functions, especially if we stipulate that
>>>> unlike a case (but like a lambda) you can have multiple arguments; then
>>>> you could write stuff like:
>>>>
>>>> sumTo0 = foldr (\of 0 k -> 0
>>>>                     n k -> n + k) 0
>>>>       
>>> sumTo0 = foldr (\0 k -> 0
>>>                  n k -> n + k) 0
>>>     
>>
>> foo = getSomethingCPS $ \ arg ->
>>       moreStuff
>>
>> is now a syntax error (\ { varid -> } matches no productions).
>>   
> A multi-way lambda could be introduced using \\ thus:
> 
>      sumTo0 = foldr (\\ 0 k -> 0; n k -> n + k) 0

I like the idea, but unfortunately '\\' is currently a regular operator
symbol. In fact it is used as (set or map) 'difference' operator (according
to
http://www.haskell.org/ghc/docs/latest/html/libraries/doc-index-92.html):

\\
  1 (Function)  Data.IntMap
  2 (Function)  Data.IntSet
  3 (Function)  Data.List
  4 (Function)  Data.Map
  5 (Function)  Data.Set

Cheers
Ben



More information about the Haskell-Cafe mailing list