On the other hand, the lens library in haskell is extremely abstract. Libraries obviously have different tradeoffs but using lens can increase the onboarding cost significantly for new team members.
I am mentioning lens because it has a both function:
incBoth = both += 1
Which has a fun type signature:
incBoth :: (Bitraversal p, MonadState (p a a) m, Num a) => m ()
I am mentioning lens because it has a both function:
Which has a fun type signature: