Data.Functor.Deriving

Functor

deriveFunctor

makeFmap

deriveFunctor limitations