Ich möchte Applicative
in Bezug auf die Kategorietheorie verstehen .
Die Dokumentation für Applicative
sagt, dass es ein starker laxer monoidaler Funktor ist .
Erstens sagt die Wikipedia-Seite über monoide Funktoren , dass ein monoider Funktor entweder lasch oder stark ist . Mir scheint also, dass entweder eine der Quellen falsch ist oder sie die Begriffe anders verwenden. Kann das jemand erklären?
Zweitens, welche monoiden Kategorien Applicative
sind monoide Funktoren? Ich gehe davon aus, dass es sich bei den Funktoren um Endofunktionen in der Standardkategorie von Haskell handelt (Objekte = Typen, Morphismen = Funktionen), aber ich habe keine Ahnung, wie die monoidale Struktur in dieser Kategorie lautet.
Danke für die Hilfe.
Functor
eine Stärke haben (WRT-Produkt), einfach weil siefmap
in der Sprache definiert sind? Und was wundert mich, dass Ihre Definition von und im Vergleich zu Ihrem Blog-Post und dem Wikipedia-Artikel umgekehrt ist - ist es ein Tippfehler? Ich habe versucht mit als zu definieren , was eindeutig benötigt wird .pure
i
pure' = \v -> fmap (\() -> v) (i ())
i :: (Applicative f) => () -> f ()
Functor
sind stark (für Produkt).Um Applicative zu verstehen, wie es von einer Monade induziert wird, möchte ich auf die folgende Konstruktion hinweisen:
Das Yoneda-Lemma impliziert, dass es einen Isomorphismus zwischen und . In der Kategorie der Haskell-Typen ist dies die Zuordnung vom Typ Bei , dann die Pfeilzuordnung der Funktoren auf die resultierende Funktion anwenden - wenn die Komponenten der natürlichen Transformation als Pfeile sinnvoll sind - und erneut abstrahieren , erhalten wir eine Zuordnung vom Typ Wenn der Funktor nun mit einem monadischen 'Join' geliefert wird, wird das Mapping von zuFA nat(Hom(A,B),FB)
quelle