Упражнение 5 раздела Haskell Typeclassopedia Section 3.2 требует подтверждения или контрпримера в заявлении
Состав двух Функторов также является Функтором.
Сначала я подумал, что речь идет о создании методов fmap, определенных двумя отдельными экземплярами Functor, но это на самом деле не имеет смысла, поскольку типы не совпадают до тех пор, пока я могу сказать. Для двух типов f и f' типы fmap будут fmap :: (a -> b) -> f a -> f b и fmap :: (a -> b) -> f' a -> f' b, и это на самом деле не представляется сложным. Итак, что значит сочинять два Functors?