-- | Modify in some context.

traverse :: Functor m => (f -> g) :-> (o -> i) -> (o -> m i) -> f -> m g
traverse l m f = (\w -> set l w f) `fmap` m (get l f)
traverse :: Functor m => (f -> g) :-> (o -> i) -> (o -> m i) -> f -> m g
traverse l m f = (\w -> set l w f) `fmap` m (get l f)
traverse l m f = (\w -> set l w f) `fmap` m (get l f)