Пояснення додаткового функтора в категоричному виразі - моноїдні функтори


40

Я хотів би зрозуміти Applicativeз точки зору теорії категорій.

У документації на нього Applicativeсказано, що це сильний в'ялий моноїдний функтор .

По-перше, на сторінці Вікіпедії про моноїдних функторів говориться, що моноїдний функтор або слабкий, або сильний . Тож мені здається, що або одне з джерел помиляється, або вони використовують по-різному терміни. Хтось може це пояснити?

По-друге, якими моноїдними категоріями Applicativeє моноїдні функціонери? Я припускаю, що функтори є ендофункторами за стандартною категорією Хаскелл (об'єкти = типи, морфізми = функції), але я поняття не маю, що таке моноїдна структура в цій категорії.

Дякуємо за допомогу.

Відповіді:


35

Тут насправді два вживання слова "сила".

  • F:C→C(C,⊗,I)σ:A⊗F(B)→F(A⊗B)F

  • F:C→D(C,⊗,I)(D,⊕,J)ϕ:F(A)⊕F(B)→F(A⊗B)i:J→F(I), що знову відповідає умові узгодженості щодо асоціаторів.

  • F:C→DϕiF(A⊗B)≃F(A)⊕F(B)ϕ

Достовірний функтор, в розумінні програм Haskell, являє собою млявий моноїдний ендофунктор з міцністю , причому моноїдна структура, про яку йдеться, є декартовими продуктами. Тож саме тому ви отримуєте парадоксально звучачий термін "сильний в'ялий моноїдальний функтор".

Fmap:(A⇒B)→(F(A)⇒F(B))

Нарешті, якщо вас зацікавила теорія типів прикладних функторів у стилі Haskell, я щойно про це вела блог.


1
Functorfmapϕipureipure' = \v -> fmap (\() -> v) (i ())i :: (Applicative f) => () -> f ()

1
У мене була відповідна помилка в цій відповіді - тепер виправлено. І так, всі екземпляри Functorє сильними (wrt продукт).
— Ніл Крішнасвамі

Не могли б ви також детальніше розібратися, де стоїть Монада? Якщо я правильно розумію, це також моноїдний ендофунктор.
— egdmitry

Hask

Чи можу я запропонувати використовувати слово міцний, щоб уникнути зіткнення позначень із "сильним"? Це шотландська (настільки конкретна тут) діалектна варіація "сильних", вперше використана в Біблії Вікліфа.
— Фоско

3

Щоб зрозуміти додаток, викликаний монадою, я хочу зазначити таку конструкцію:

FAnat(Hom(A,B),FB)

a↦(g↦F(g)(a))
FA→BA→FB.
FAFA
FA→FBA→FFB.
FFBFB
FBA→FA→FB,
LiftM2 id
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.