Explicando o functor aplicável em termos categóricos - funcitores monoidais

40

Eu gostaria de entender Applicativeem termos de teoria de categorias.

A documentação para Applicativediz que é um forte monitoral relaxado .

Primeiro, a página da Wikipedia sobre functores monoidais diz que um functor monoidal é relaxado ou forte . Portanto, parece-me que uma das fontes está errada ou eles usam os termos de maneira diferente. Alguém pode explicar isso?

Segundo, quais são as categorias monoidais dos quais Applicativesão funcionadores monoidais? Suponho que os functores sejam endo-functores na categoria padrão de Haskell (objetos = tipos, morfismos = funções), mas não tenho idéia de qual é a estrutura monoidal nessa categoria.

Obrigado pela ajuda.

Petr Pudlák
fonte

Respostas:

35

Na verdade, existem dois usos da palavra "força" em jogo aqui.

  • Um endofuncor forte sobre uma categoria monoidal ( C , , I ) é aquele que vem com uma transformação natural σ : A F ( B ) F ( A B ) , satisfazendo algumas condições de coerência com relação a o associador que vou abordar. Às vezes, essa condição também é pronunciada " F tem força".F:CC(C,,I)σ:AF(B)F(AB)F

  • F:CD(C,,I)(D,,J)ϕ:F(A)F(B)F(AB)i:JF(I), satisfazendo novamente uma condição de coerência com relação aos associadores.

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

Um functor aplicador, no sentido de programas Haskell, é um endofuncor monoidal frouxo com força , com a estrutura monoidal em questão sendo os produtos cartesianos. Portanto, é por isso que você obtém o termo que soa paradoxal "forte função monoidal relaxada".

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

Por fim, se você está interessado na teoria dos tipos de funções aplicadoras no estilo Haskell, acabei de escrever sobre isso.

Neel Krishnaswami
fonte
11
Functorfmapϕipureipure' = \v -> fmap (\() -> v) (i ())i :: (Applicative f) => () -> f ()
11
Eu tive um erro de digitação nesta resposta - agora corrigido. E sim, todas as instâncias de Functorsão fortes (produto errado).
Neel Krishnaswami
Poderia, por favor, também elaborar onde fica a Monad? Se bem entendi, é um endofuncor monoidal também.
egdmitry
Hask
Posso propor usar a palavra forte para evitar choque de notação com "forte"? É uma variação dialetal escocesa (tão particularmente clara aqui) de "forte", usada pela primeira vez na Bíblia de Wycliffe.
Fosco
3

Para entender o Aplicativo, induzido por uma mônada, quero destacar a seguinte construção:

FAnat(Hom(A,B),FB)

a(gF(g)(a))
FABAFB.
FAFA
FAFBAFFB.
FFBFB
FBAFAFB,
LiftM2 id
Nikolaj-K
fonte