ぱたーんまっちんぐ

....
  | pattern1 when cond -> body
  | pattern2 when cond -> body
....

では、

  1. pattern1にマッチ
  2. condをテスト → 失敗
  3. pattern2にマッチ
  4. condをテスト → OK
  5. bodyの評価

となる。

....
  | pattern1 | pattern2
    when cond
      -> body
....

では、同じ入力に対して

  1. 「pattern1かpattern2」のうちpattern1にマッチ
  2. condをテスト → 失敗
  3. パターンマッチ失敗

となる。

全然違ってた。

こういう部分では、インデントや改行に迷ってしまう。