I'm working trough the book Haskell in depth and I noticed following code example:
withReader :: (r' -> r) -> Reader r a -> Reader r' a
This looks like contramap. What the relationship between Control.Monad.Reader and Data.Functor.Contravariant?