8
votes

Dans les paramètres de type SCALA, que font - >> et - >>>?

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]
}


0 commentaires

3 Réponses :


5
votes

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 [t] 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).

Le nom de type flèche a été choisi car, comme il le dit,

"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. "


1 commentaires

Salut Luigi, aussi une bonne réponse, mais je donne le chèque à Eugene pour une explication plus profonde ...



14
votes

Les symboles eux-mêmes ne veulent rien dire. Ce sont des noms arbitraires Heiko cueillis: xxx

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 a - >> B est identique que - >> [a, b] .

selon ce qui se passe sur ... Heiko dit

En regardant les ingrédients, nous trouvons tout ce dont nous avons besoin: types A et b sont mappés sur les types f [a] et < code> f [b] et maps a - >> B sont mappés sur des mappes f [a] - >>> f [b] .

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 - >> et - >>> . f [_] est un conteneur comme Liste et Option . Je pense ..

donc fmap (alias mapper méthode dans scala) prend une flèche de valeurs et renvoie une autre flèche de conteneurs. Sauf Contrairement à la carte Méthode , FMAP renvoie une flèche qui prend un conteneur.

une application spécifique du générique en utilisant < Code> La fonction pour les deux flèches est Foncteur . Et application spécifique de Foncteur qui utilise la liste pour le conteneur est listfunctor . xxx

Donc, cela prend une fonction de A à B et renvoie une fonction de la liste [a] à list [b] , appelant mappe interne.


1 commentaires

Qu'est-ce que la liste [B] = comme => en tant que carte moyenne? Jamais vu cette syntaxe



1
votes

Réponse copiée de Ma réponse à une question en double sur demande :

C'est un Type plus élevé , décrit gentiment dans Cette introduction et dans ce Document de recherche .

La raison pour laquelle vous trouverez peut-être la confusion est que - >> est le nom du type plus élevé - il aurait peut-être été aussi bien appelé flèche .


0 commentaires