遅延パターン

値v の˜pat に対するマッチングはpat が何であってもいつも成功する.操作論の観点からいうとpat のなかの識別子が右辺で「使用」されるとすると,それはv がpat にマッチすると仮定した場合の値に束縛されるか,さもなければ, ⊥ となる.

f z (1:y) = print z

f1 z ~(1:y) = print z
*Main> f 1 [1,1]
1
*Main> f1 1 [1,1]
1
*Main> f 1 [2,1]
*** Exception: main.hs:1:0-18: Non-exhaustive patterns in function f
*Main> f1 1 [2,1]
1