Wyjaśnienie funktora aplikacyjnego w kategoriach kategorycznych - funktory monoidalne

40

Chciałbym zrozumieć Applicativew kategoriach teorii kategorii.

Dokumentacja dla Applicativetwierdzi, że jest to silny funktor LAX monoidal .

Po pierwsze, strona Wikipedii o funktorach monoidalnych mówi, że funktor monoidalny jest luźny lub silny . Wydaje mi się więc, że jedno ze źródeł jest niepoprawne lub używają terminów inaczej. Czy ktoś może to wyjaśnić?

Po drugie, jakie są monoidalne kategorie Applicativefunktorów monoidalnych? Zakładam, że funktory to endo-funktory w standardowej kategorii Haskella (obiekty = typy, morfizmy = funkcje), ale nie mam pojęcia, jaka jest struktura monoidalna w tej kategorii.

Dzięki za pomoc.

Petr Pudlák
źródło

Odpowiedzi:

35

W grze występują tutaj dwa zastosowania słowa „siła”.

  • Silne endofunctor ponad monoidal kategorii ( C , , I ) jest taki, który pochodzi z naturalnego transformacji Ď : F. ( B ) F ( B ) spełniających pewne warunki spójność względem stowarzyszacz, nad którym przeświecam. Ten warunek jest czasami wymawiany również jako „ F ma siłę”.F:CC(C,,I)σ:AF(B)F(AB)F

  • F:CD(C,,I)(D,,J)ϕ:F(A)F(B)F(AB)i:JF(I), ponownie spełniając warunek spójności w odniesieniu do asocjatorów.

  • F:CDϕiF(AB)F(A)F(B)ϕ

Funktorem aplikacyjnym, w sensie programów Haskella, jest luźny monofalowy endofunkor o sile , którego monoidalną strukturą są produkty kartezjańskie. Oto dlaczego otrzymujesz paradoksalnie brzmiący termin „silny luźny funktor monoidalny”.

Fmap:(AB)(F(A)F(B))

Wreszcie, jeśli interesuje Cię teoria typów funktorów aplikacyjnych w stylu Haskell, właśnie o tym napisałem na blogu.

Neel Krishnaswami
źródło
1
Functorfmapϕipureipure' = \v -> fmap (\() -> v) (i ())i :: (Applicative f) => () -> f ()
1
W tej odpowiedzi miałem literówkę - teraz naprawioną. I tak, wszystkie przypadki Functorsą silne (wrt produktu).
Neel Krishnaswami
Czy mógłby Pan także rozwinąć stanowisko Monady? Jeśli dobrze rozumiem, jest to również endoidalny monoid.
egdmitry
Hask
Czy mogę zaproponować użycie słowa strongy, aby uniknąć zderzenia notacji z „strong”? Jest to szkocka (szczególnie szczególnie tutaj) dialektalna odmiana „silnego”, po raz pierwszy zastosowana w Biblii Wycliffe.
Fosco
3

Aby zrozumieć zastosowanie, wywołane przez monadę, chcę wskazać następującą konstrukcję:

FAnat(Hom(A,B),FB)

a(gF(g)(a))
FABAFB.
FAFA
FAFBAFFB.
FFBFB
FBAFAFB,
LiftM2 id
Nikolaj-K
źródło