I think you should add the form:

(function -> pattern) @ pattern

as well. The reason you don't need general 'pattern @ pattern' with normal patterns is that, if anything is going to match, the two patterns must have the same outermost constructor, so you can push the @ inside. This doesn't hold for view patterns, and you might well want to match against several views.

Of course you can do this with 'both', but the readability is terrible, especially if you want to match against more than two patterns. Nested 'both' gets extremely long, or do you want to define 'allThree', 'allFour', ...

The reason I think this might be important is that you could use view patterns for records:

(label1 -> x)@(label2 -> y)@(label3 -> z) ...

gives a reasonable syntax for a record pattern, and it would be compatible with any form of extensible records.

Barney.

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to