lenses

Я кодировал с помощью пакета линз. Все шло хорошо, пока я не попытался получить доступ к определенному полю алгебраического типа: import Control.Lens data Type = A { _a :: Char } | B makeLenses ''Type test1 = _a (A 'a') test2 = (A 'a') ^. a No instance for (Data.Monoid.Monoid Char) arising from a use...

может кто-нибудь объяснить мне функциональные линзы? Это удивительно сложная тема для google, и я не добился никакого прогресса. Все, что я знаю, это то, что они обеспечивают аналогичную функциональность get/set, чем в OO....