minus1216
data
とレコード構文で定義した、一つだけコンストラクタを持つ型について、コンストラクタの各引数へのアクセサとなるLensを勝手に導出してくれるような方法はありますか?data
とレコード構文で定義した、一つだけコンストラクタを持つ型について、コンストラクタの各引数へのアクセサとなるLensを勝手に導出してくれるような方法はありますか?lens
パッケージの Control.Lens.TH で定義されているmakeLenses などのマクロを使って定義を生成させるか、generic-lens
パッケージと OverloadedLabels
言語拡張を使って #hogeField
みたいな構文で自動でレンズ/プリズムを生成してもらう方法がメジャーでしょうかOverloadedLabels
に抵抗がなければ generic-lens が便利(マクロではなく定義順が制約されることがないので)ですが、generic-lens のレンズを複数合成すると場合によっては多相性が邪魔をして上手く推論してくれない場合もあります。用途に応じて使い分ける形かなと