Mi piacerebbe capire Applicative
in termini di teoria delle categorie.
La documentazione per Applicative
dice che si tratta di un forte funzione lenta monoidale .
In primo luogo, la pagina di Wikipedia sui funzioni monoidali afferma che un funzione monoida è lassista o forte . Quindi mi sembra che una delle fonti sia sbagliata o che usino i termini in modo diverso. Qualcuno può spiegarlo?
In secondo luogo, quali sono le categorie monoidali dei quali Applicative
sono i funzioni monoidali? Presumo che i funzioni siano endo-funzioni nella categoria standard di Haskell (oggetti = tipi, morfismi = funzioni), ma non ho idea di quale sia la struttura monoidale in questa categoria.
Grazie per l'aiuto.
Functor
hanno un punto di forza (prodotto WRT), semplicemente perché sono definite usandofmap
all'interno della lingua? Inoltre, cosa mi fa pensare che la tua definizione di e sia invertita rispetto sia al tuo post sul blog che all'articolo di Wikipedia - è un errore di battitura? Ho provato a definire usando come , che chiaramente ha bisogno . iopure
i
pure' = \v -> fmap (\() -> v) (i ())
i :: (Applicative f) => () -> f ()