variantの小さなサンプルを書いてみた
extensible
パッケージのvariant
の使い方を確認するために小さなサンプルを書いてみました。
やりたいことは、
data A = AX | AY deriving (Show, Eq) data B = BY | BZ deriving (Show, Eq)
と定義したときに、A
とB
を合わせたデータ(構造)を(簡単に)定義し、(簡単に)つかいたい
ということです。
data AB = A A | B B deriving (Show, Eq)
このように定義できますが、AB
型でのデータコンストラクタA
,B
が冗長なので何とかしたいということです。
extensible
のvariant
でなんとかなるとおもったのですが、実際に書いてみると、それはそれで記述量が多くなると感じました。
データコンストラクタを書かなくてよいのですが、代わりに、ラベルを書く必要があるので、今回のやりたいことの場合extensible
をつかうメリットはないかなと思いました(まだ理解できていないだけかも)。