lens: Lenses, Folds and Traversals
makeFieldsId
NoFieldSelectorsを前提に定義したデータ構造に対して、 lensのレコードのフィールドアクセサを定義する時は、 makeFieldsIdというTemplate Haskell関数を使ってください。
makeFieldsIdを使うときはフィールドにプレフィクスやアンダースコアは付けないでください。 NoFieldSelectors拡張の力でプレフィクスは不要になっています。 makeFieldsId関数は完全にフィールド名と同じアクセサを生成するので、 プレフィクスやアンダースコアをつけると奇妙なアクセサが生成されてしまうのでむしろよくありません。
makeFieldsIdは実行する段階で既に型クラスの定義が見えているならば、 型クラスの重複定義はせず既に存在する型クラスのインスタンスとしてアクセサを定義します。
そのため型クラスの重複を怖がって
[Description truncada. Veja o README completo no GitHub.]