読者です 読者をやめる 読者になる 読者になる

きくらげ観察日記

好きなことを、適当に。

Haskellで独自のパターンを定義

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)