У меня есть некоторые типы данных по строке
data Outer = Outer { _list :: [ Inner ] }
data Inner = Inner { _bool :: Bool }
используя Control.Lens, я могу получить доступ к _bool i-го Inner (внутри монады State State), как это
boolValue <- gets (^. list . to (!! i) . inner)
Я также хотел бы обновить это значение с помощью
list ^. (to (!! i)) ^. inner %= True
Однако (по моему мнению) функция 'to' создает только геттер, а не истинный объектив, который может использоваться как геттер, так и сеттер.
Итак, как я могу преобразовать (!! i) в объектив, который позволит мне обновить это поле?