не так с линзами?:
haskell
data App
= App
{
...
, _gui :: GUI
...
} deriving Show
$(makeLenses ''App)
data GUI
= IntrGUI
{
...
, _optsB :: Widget
...
}
| ...
deriving Show
$(makeLenses ''GUI)
data Widget
...
| Button -- True when pressed, False when released
{
...
, _pressed :: Bool
...
}
$(makeLenses ''Widget)
-- works:
test = _pressed $ _optsB $ app' ^. App.gui
-- does not work: No isntance for (Monoid Bool) arising from use of 'optsB'
test = app' ^. App.gui . optsB . pressed
Судя по палке внутри виджета, там нужна призма
это часть пакета lens?
Обсуждают сегодня