Я пытаюсь привыкнуть к библиотеке lens
для Haskell и пытаюсь решить некоторые простые проблемы. Например, допустим (для удобства), что at
и _1
имеют следующие типы (по крайней мере, я их понимаю):
at :: Ord k => k -> Lens' (Map k v) (Maybe v)
_1 :: Lens' (a, b) a
Как объединить эти линзы в объектив со следующим типом:
maybeFst :: Ord k => k -> Lens' (Map k (a, b)) (Maybe a)