Упражнение 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
?