Don't these things generally get added as LANGUAGE pragmas though? If
it's off by default then peoples code should be okay.
Also, I'd prefer something like `cases` as the keyword, rather than
`case of`, mostly for aesthetics, but also so that, upon visual
inspection, I wouldn't wonder where the pattern went and potentially
try to 'fix" the point-free case match.
/Joe
On Nov 5, 2009, at 1:09 PM, Edward Kmett wrote:
On Thu, Nov 5, 2009 at 10:59 AM, Stefan Monnier <[email protected]
> wrote:
> We could really use a case statement in which we skip the
scrutinee and make
> (case of {})' be syntactic sugar for `(\x -> case x of {})'.
> So we could write:
>> myFunc = anotherFunc $ case of
>> Left err -> print err
>> Right msg -> putStrLn msg
> A minor syntactical addition, a big win!
Since this "case" really defines a function, it seems like it would
make
more sense to allow defining anonymous functions by pattern matching.
I.e. instead of "case of", I think it should use "λ", "\", "fn",
or ...
The problem with all of those options is that they introduce a new
keyword into the language and can potentially break existing code.
Eugene's \{ } avoids that by using a different hole in the grammar,
but at the expense of 'un-Haskelly' braces. That and I question how
easy it would be to get to parse, because a common idiom seems to be
to parse patterns as expressions before converting them to patterns
to avoid certain other ambiguities in the grammar, so this requires
a { } expression, which may introduce a lot more ambiguity and
problems to the grammar than it would seem at first glance.
-Edward Kmett
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe