我有一些数据类型
data Outer = Outer { _list :: [ Inner ] }
data Inner = Inner { _bool :: Bool }
使用 Control.Lens,我可以像这样访问第 i 个内部(在“状态外部”单子内)的 _bool
boolValue <- gets (^. list . to (!! i) . inner)
我也希望能够用类似的东西更新这个值
list ^. (to (!! i)) ^. inner %= True
但是(根据我的理解),“to”函数只创建一个 getter,而不是一个可以用作 getter 或 setter 的真正镜头。
那么,如何将 (!! i) 转换为允许我更新此字段的镜头?