Heiko Seeberger a écrit un excellent article de blog sur la théorie de la catégorie ici:
https://hseeeberger.wordpress.com/2010/11/25/introduction-to-Category-theary-in-scala/ P>
Il définit unfuncteur générique comme si: P>
trait GenericFunctor[->>[_, _], ->>>[_, _], F[_]] {
def fmap[A, B](f: A ->> B): F[A] ->>> F[B]
}
3 Réponses :
Un indice est qu'ils sont entre crochets dans la définition du trait: ce ne sont que des symboles arbitraires choisis par l'auteur de blog, tout comme Le nom de type flèche a été choisi car, comme il le dit, P>
"A - >> B n'est qu'une autre façon d'écrire - >> [A, B], qui reflète gentiment
le fait que nous parlions ici de cartes ici. " P>
blockQuote> [t] code> est souvent choisi pour les classes génériques, traits et méthodes. Celles-ci sont ici simplement pour être des types plus élevés (c'est-à-dire des paramètres avec des paramètres). P>
Salut Luigi, aussi une bonne réponse, mais je donne le chèque à Eugene pour une explication plus profonde ...
Les symboles eux-mêmes ne veulent rien dire. Ce sont des noms arbitraires Heiko cueillis: Ce sont des parties de paramètres de type qu'ils sont eux-mêmes des constructeurs de type (types de type plus frappés si vous souhaitez sonner de l'amie).
Les applications de type peuvent être écrites Infix, de sorte que selon ce qui se passe sur ... Heiko dit P> En regardant les ingrédients, nous trouvons tout ce dont nous avons besoin: types Puisque nous parlons la théorie de la catégorie, nous voulons éviter le terme fonction, car c'est spécifique de la mise en œuvre, mais nous voulons décrire quelque chose de genre comme une fonction. Quelque chose d'une fonction comme une fonction dans leur lingo est une flèche. Nous avons besoin de deux d'entre eux puisque nous ne voulons pas assumer les flèches entrantes et sortantes pour être la même chose. Ces deux flèches sont représentées par donc une application spécifique du Donc, cela prend une fonction de a - >> B code> est identique que - >> [a, b] code>. P>
A code> et b code> sont mappés sur les types f [a] code> et < code> f [b] code> et maps a - >> B code> sont mappés sur des mappes f [a] - >>> f [b] code>. p>
BlockQuote> - >> code> et - >>> code>. f [_] code> est un conteneur comme Liste code> et Option code>. Je pense .. p> fmap code> (alias mapper code> méthode dans scala) prend une flèche de valeurs et renvoie une autre flèche de conteneurs. Sauf Contrairement à la carte code> Méthode Code>, FMAP code> renvoie une flèche qui prend un conteneur. P> générique code> en utilisant < Code> La fonction code> pour les deux flèches est Foncteur code>. Et application spécifique de Foncteur code> qui utilise la liste code> pour le conteneur est listfunctor code>. P> A code> à B code> et renvoie une fonction de la liste [a] code> à list [b] Code>, appelant mappe code> interne. p> p>
Qu'est-ce que la liste [B] = comme => en tant que carte b> moyenne? Jamais vu cette syntaxe
Réponse copiée de Ma réponse à une question en double sur demande : p>
C'est un Type plus élevé , décrit gentiment dans Cette introduction et dans ce Document de recherche . P>
La raison pour laquelle vous trouverez peut-être la confusion est que - >> code> est le nom du type plus élevé - il aurait peut-être été aussi bien appelé flèche code>. p>