ぱたーんまっちんぐ

よくわからないのは、

....
  | (x, SomeConstructor a) when ... -> ....
  | (SomeConstructor a, x) when ... -> ....
....

みたいなコードで、whenの中身を共有したいときに、

....
  | (x, SomeConstructor a)
  | (SomeConstructor a, x)
    when ...
      -> ....

と書いても、うまく動作しないこと。

特にこれがいけないという注意事項は見つからないのだが。