data Foo = Foo {
_bar :: Map String Integer
} deriving (Eq, Ord, Read, Show, Data, Typeable)
$(deriveSafeCopy 0 'base 'Foo)
$(makeLenses ''Foo)
Учитывая приведенный выше код я нахожусь под впечатлением, что это должно быть возможно сделать это:Как увеличить кислотное состояние?
addEntry :: String -> Update Foo()
addEntry s = zoom bar $ modify $ insert s 0
Но GHC будет жаловаться по линиям:
src/Backend.hs:39:20:
No instance for (Functor
(Control.Lens.Internal.Zoom.Zoomed (Update Foo)()))
Любые идеи?
Так что, возможно, нет способа получить это (и подобные экземпляры) в какой-то пакет, например, «линзовое кислотное состояние»? – fho
Это потребует еще нескольких подхалимных жонглирования модулей, возможно, «кислотного состояния внутреннего», от которого зависят и «кислотная кислота», и «линзовое кислотное состояние». –
Стоит ли это того? Или есть способ обеспечить «Zoomed», не полагаясь на «объектив», как это возможно, с основными типами «Lens»? (Этот вопрос, вероятно, должен быть направлен непосредственно на экметта или сопровождающих кислотных состояний). – fho