Hi,

On 06.10.2010, at 22:43, Sterling Clover wrote:

> 
> On Oct 6, 2010, at 5:39 AM, Simon Marlow wrote:
> 
>> A slightly different suggestion from Simon PJ and myself (we agreed on 
>> something syntax-related :-) is the following:
>> 
>> \case 1 -> f
>>      2 -> g
>> 
>> where the two-token sequence '\ case' introduces a new optional layout 
>> context, the body of which is exactly the same as in a case expression.  So 
>> you could also write
>> 
>> \case { 1 -> f; 2 -> g }
>> 
>> if you want.  Guards are allowed of course.
> 
>> * a bit more noisy than just \:  I'm not sure what the
>>  ramifications of having \ introduce a layout context
>>  on its own would be, but I suspect there would be difficulties.
>>  Certainly some existing code would fail to parse, e.g.
>> 
>>  (case e of [] -> \x -> x+1; (x:xs) -> \x -> x+2)
> 
> \ introducing a layout context is a no-go because, as in the example given, 
> it breaks too much code. However, \case as described is somewhat less 
> powerful. In particular, \ with a layout context lets us have multi-argument 
> pattern matching, while both \case and "case of" give only single argument 
> pattern matching. I don't know if the extra functionality is that important, 
> but I don't see why we can't provide for it anyway, as in:
> 
> \case (x:xs) n -> go xs; _ n -> n;

Then, there is an inconsistency between lambda-case and traditional case and 
people will start complaining about that.

Haskell98 is a very well thought out language with very few syntactiv warts. 
I'd avoid introducing new language extensions which do introduce new warts. 
Backwards compatibility is not so important, because GHC will hopefully make it 
optional. Even when an extended \{ p1 -> e1; p2 -> e2 } is part of Haskell 2012 
GHC will probably support Haskell 2011 as well. Therefore, I'd worry less about 
backwards compatibility, but concentrate more on consistency and elegance. I.e 
I'll favor
\p1 p2 -> e1
 p3 p4 -> e2

Just my 2 cents.

-- Jean_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to