私はいくつかのデータ型を持っています
data Outer = Outer { _list :: [ Inner ] }
data Inner = Inner { _bool :: Bool }
Control.Lens を使用すると、次のように i 番目のインナー ('State Outer' モナド内) の _bool にアクセスできます。
boolValue <- gets (^. list . to (!! i) . inner)
この値を次のようなもので更新できるようにしたいと思います
list ^. (to (!! i)) ^. inner %= True
ただし(私の理解では)、「to」関数はゲッターを作成するだけであり、ゲッターまたはセッターとして使用できる真のレンズではありません。
では、(!! i) をレンズに変換して、このフィールドを更新できるようにするにはどうすればよいでしょうか?