Я хотел бы понять Applicative
с точки зрения теории категорий.
Документация для Applicative
говорит , что это сильный слабый моноидальный функтор .
Во-первых, на странице Википедии о моноидальных функторах говорится, что моноидальный функтор слабый или сильный . Так что мне кажется, что либо один из источников неверен, либо они используют термины по-другому. Кто-нибудь может это объяснить?
Во-вторых, каковы моноидальные категории Applicative
моноидальных функторов? Я предполагаю, что функторы являются эндофункторами в стандартной категории Haskell (объекты = типы, морфизмы = функции), но я понятия не имею, что такое моноидальная структура в этой категории.
Спасибо за помощь.
Functor
имеют силу (продукт WRT) просто потому, что они определены с использованиемfmap
языка? Кроме того, что меня озадачивает, что ваше определение и i перевернуто по сравнению с вашим постом в блоге и статьей в Википедии - это опечатка? Я попытался определить, используя как , что явно необходимо .pure
i
pure' = \v -> fmap (\() -> v) (i ())
i :: (Applicative f) => () -> f ()