Is it possible to set default values if Nothing
is encountered somewhere in a deep Lens lookup/assignment?
E.g. for lookup:
(Just (4, 3), 2) ^. _1 . (maybe (6, 5)) . _1 == 4
(Nothing, 2) ^. _1 . (maybe (6, 5)) . _1 == 6
Or perhaps more importantly, for assignment:
((Just (4, 3), 2) & _1 . (maybe (6, 5)) . _1 .~ 7) == (Just (7, 3), 2)
((Nothing, 2) & _1 . (maybe (6, 5)) . _1 .~ 7) == (Just (7, 5), 2)
You can use
non :: Eq a => a -> Iso' (Maybe a) a
to createIso
betweenEq a => Maybe a
andEq => a
(see also).