Scalaではunapplyメソッドを定義することにより独自のパターンを定義できますが、実はHaskellでも似たようなことができます。
PatternSynonyms拡張を有効化することで、既存のパターンについてのエイリアスのようなものを定義することができます。
{-# LANGUAGE PatternSynonyms #-} pattern x :-> y = (x, y)
この拡張を有効化することによって、新たな予約後「pattern」が追加されます。
左辺に新たなパターンを、右辺に既存のパターンを書くことによって、左辺のパターンが右辺のパターンのシンタックスシュガーとなります。
>>> case (3, 4) of x :-> y -> x + y 7 >>> 3 :-> 4 (3,4)