1fgmap :: (Functor f, Functor g) => (a -> b) -> (f (g a) -> f (g b))
2fgmap = fmap . fmap
3