
I would also very much like to have multi-argument pattern matching, but in
\case a b -> ... ...
it sure suggests to me that `a` should be applied to `b` before casing.
I feel like sugar is designed to make a couple of specific uses nicer. Being as general and orthogonal as possible is the job of the primitives. So I don't mind too much if sugar is a little ad-hoc. Single argument \case addresses the monadic case problem. Does someone have some examples of nice expressions that you need a multi argument case-lambda for? I don't mind writing 'case (a, b) of ...' very much. Seems like you could get the same effect with 'curry': (\case { a b -> ... ; a b -> ...}) x y can be written (curry $ \case { (a, b) -> ... }) x y Not as pretty, but still point-free.