irrefutable Pattern(不可反駁パターン)とは…?

先日の勉強会で irrefutable patternが出てきたのでメモ。

仮引数のような必ず照合が成功するようなパターンのことを不可反駁 ( irrefutable )パターンといいます。反対に可反駁 ( refutable )パターンは照合が成功しない可能性があります。上であげた contrived の例はこの可反駁パターンの例です。不可反駁パターンには 3 つの種類があります。そのうち 2 つを紹介しましょう。

やさしい Haskell 入門 ( Version 98 ) sec.4 Case 式とパターン照合
  • irrefutable pattern
    • as-pattern
      • f s@(x:xs) = x:s
      • s は全体(x:xs)って事ですかね。
    • wildcard-pattern
      • 「入門Haskell」P.69 に載ってました。
    • lazy-pattern
      • client init ~(resp:resps) = init : client (next resp) resps
      • ~(チルダ)で irrefutable になるのですね。

本当の本当にメモです。最近、体が怠くて眠いので後回し。