Я имел этот вопрос на самой задней части моей памяти с тех пор я видел definition of natural transformations в старой категории-статистов пакет Эдварда Kmett в:Где функтор естественной трансформации?
-- | A natural transformation between functors f and g.
type f :~> g = forall a. f a -> g a
Но теперь чтение блога Стивена Diehl на adjunctions, я считаю, это:
естественное преобразование в нашем контексте будет полиморфная функция, связанная с два экземпляра Хаскел функтор Р и с типом подписи (Functor F, функтор г) => FORALL а. f a -> g a. Который мог бы быть написан синонимом следующего типа.
type Nat f g = forall a. f a -> g a
который был оплеуху моего «Я буду продолжать игнорировать это» отношение. Итак, на вопрос: почему нормально внезапно отказаться от ограничений функтора?
Когда вы используете 'Nat', вы будете поставлять типы. Сам синоним типа не использует тот факт, что они являются Функторами. Только когда вы его используете, это имеет значение, если это имеет смысл. –
Хмммм. 'Forall' сам уменьшает количество функций неестественного преобразования, которые вы можете определить, даже если рассматриваемые функторы не изначально очевиден/не стучат. – AndrewC
Прочтите отличные [вы могли бы определить естественные преобразования] (http://blog.sigfpe.com/2008/05/you-could-have-defined-natural.html) для лучшего объяснения взаимосвязи между полиморфизмом и естественным преобразования. – AndrewC