Чтение манов — для слабаков, а талмуда по lens — тем более. Вопрос: как совместить два действия над одним значением изящнее, чем:
import Control.Lens
on1 :: (b -> a -> c) -> (a -> b) -> a -> c
on1 f g a = f (g a) a
main = do
print $ on1 (_1 +~) (view _2) (1, 2)
print $ on1 (views _1) ((+) . view _2) (1, 2)