Я хотел бы понять Applicative
с точки зрения теории категорий.
Документация для Applicative
говорит , что это сильный слабый моноидальный функтор .
Во-первых, на странице Википедии о моноидальных функторах говорится, что моноидальный функтор слабый или сильный . Так что мне кажется, что либо один из источников неверен, либо они используют термины по-другому. Кто-нибудь может это объяснить?
Во-вторых, каковы моноидальные категории Applicative
моноидальных функторов? Я предполагаю, что функторы являются эндофункторами в стандартной категории Haskell (объекты = типы, морфизмы = функции), но я понятия не имею, что такое моноидальная структура в этой категории.
Спасибо за помощь.
Functor
имеют силу (продукт WRT) просто потому, что они определены с использованиемfmap
языка? Кроме того, что меня озадачивает, что ваше определение и i перевернуто по сравнению с вашим постом в блоге и статьей в Википедии - это опечатка? Я попытался определить, используя как , что явно необходимо .pure
i
pure' = \v -> fmap (\() -> v) (i ())
i :: (Applicative f) => () -> f ()
Functor
сильны (по продукту).Чтобы понять Applicative, вызванный монадой, я хочу указать на следующую конструкцию:
Из леммы Йонеды следует, что между и n a t существует изоморфизм ( H o m ( A , B ) , F B ) . В категории типов Haskell, это отображение ↦ ( г ↦ Р ( г ) ( ) ) типа F A → B A → F B . Оценка в F AFA n a t ( H o m (A,B),FБ )
источник