Je lis Learn You a Haskell for Great Good , et je ne sais jamais prononcer les opérateurs Haskell. Ont-ils de «vrais» noms? ?
Par exemple, comment lisez-vous à haute voix une expression comme celle-ci?
Just (+3) <*> Just 9
Je sais que >>=
c'est "lier", mais qu'en est-il des autres? Étant donné que Google ne prend pas en compte les caractères non alphanumériques, il est difficile de faire une recherche efficace ...
Je me rends compte que vous pouvez créer vos propres opérateurs, donc bien sûr, tous les opérateurs ne peuvent pas avoir de noms, mais je m'attends à ce que les opérateurs communs (par exemple ceux définis dans Applicative
ou Monad
) doivent avoir des noms ...
<*>
prononcé?" ? Même si ce n'est pas le cas, ses réponses méritent probablement d'être vérifiées.()
est l'unité prononcée. Une fois, je me suis retrouvé coincé devant un public de quelques centaines de programmeurs fonctionnels ne sachant pas comment prononcer cela sur ma diapositive.Réponses:
Voici comment je les prononce:
la source
(.)
c'est "composer".(.)
furof
et à($)
mesureapplied to
:f . g . h $ x
est donc luf of g of h applied to x
. Mais je comprends la divergence dans ce point de vue!(.)
comme "après" est plus sensé. La composition peut être indiquée dans deux directions, et l'appeler "après" explique immédiatement comment cela fonctionne aussi.const 42 . fix id
, peut-on vraiment direconst 42
vient "après" une boucle infinie?++
"ajouter" au lieu deconcat
, carconcat
c'est déjà quelque chose dans Haskell et son utilité est très différente.la source
<*
? Est-il si rarement utilisé qu'il n'a pas de nom commun?Mes favoris personnels sont "poisson gauche" (<= <) et "poisson droit" (> =>) . Qui sont juste la composition Kleisli gauche et droite des opérateurs de monades. Composez du poisson, composez!
la source
J'ai pris la liberté d'assembler les réponses dans un programme haskell très simple, que seule la correspondance de motifs essaie de traduire le code haskell en anglais. Je l'appelle
letterator
parce qu'il traduit des symboles en lettresla source
la source
<*>
,>>
...