Sum Typeに対するLensのフィールドを自動生成する方法について質問です。
(多分日本語を含むのでバイナリ扱いされている)スニペットに詳細を書いてあるように、
のように書いたら、
のようなコードが自動生成されると嬉しいなと思っています。
軽く探した所そういうライブラリは見当たらなかったので、
自分で書こうとも思っていますが、
Template Haskellはそんなに得意では無いので、
既存のライブラリがあったり、
そもそも他の方法を使えばボイラープレート書かなくても良いなどという指摘があれば欲しいと思っています。
(多分日本語を含むのでバイナリ扱いされている)スニペットに詳細を書いてあるように、
deriveFieldsForSumType ''HasBase ''ToyExpr
のように書いたら、
instance HasBase ToyExpr Text where
base = lens getter setter
where getter (ToyExprToyInt x) = view base x
getter (ToyExprToyStr x) = view base x
setter (ToyExprToyInt x) y = toToyExpr $ set base y x
setter (ToyExprToyStr x) y = toToyExpr $ set base y xのようなコードが自動生成されると嬉しいなと思っています。
軽く探した所そういうライブラリは見当たらなかったので、
自分で書こうとも思っていますが、
Template Haskellはそんなに得意では無いので、
既存のライブラリがあったり、
そもそも他の方法を使えばボイラープレート書かなくても良いなどという指摘があれば欲しいと思っています。