class Functor f where fmap :: (a -> b) -> f a -> f b
f transforms types to types, and
fmap brings functions along. If
f represents a container like
fmap applies functions "inside" the container.
λ> fmap (1+) $ Just 5 Just 6
fmap (same as monoid transformation rules!):
fmap id ←→ id fmap (g . h) ←→ (fmap g) . (fmap h)