IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

variantの小さなサンプルを書いてみた

extensibleパッケージのvariantの使い方を確認するために小さなサンプルを書いてみました。

やりたいことは、

data A = AX | AY deriving (Show, Eq)
data B = BY | BZ deriving (Show, Eq)

と定義したときに、ABを合わせたデータ(構造)を(簡単に)定義し、(簡単に)つかいたい

ということです。

data AB = A A | B B deriving (Show, Eq)

このように定義できますが、AB型でのデータコンストラクA,Bが冗長なので何とかしたいということです。

extensiblevariantでなんとかなるとおもったのですが、実際に書いてみると、それはそれで記述量が多くなると感じました。

データコンストラクタを書かなくてよいのですが、代わりに、ラベルを書く必要があるので、今回のやりたいことの場合extensibleをつかうメリットはないかなと思いました(まだ理解できていないだけかも)。

Variant sample