¿Nombres pronunciables para operadores scalaz?
functional-programming (3)
Algunos de los más utilizados para mí:
-
∘
y∙
son alias paramap
ycontramap
respectivamente. Sin embargo, solo uso esos alias para la instancia deFunctor
de una función((->) a)
, por lo tanto los llamo componer. -
↦
y|->
- atravesar -
⊥
(de scalaz 6) - parte inferior -
⊹
y|+|
- además, mappend -
∅
- cero -
>>=
- enlazar -
>=>
- pescado - Operadores de igualdad de tipo seguro (
===
y/==
) - solo es igual a / no es igual a -
σ
(de scalaz 6) - dual -
<*>
- después de leer el reciente post de Tony Morris , llamándolo "el operador de la nave estelar"
Mientras aprendía Haskell, encontré la respuesta a esta pregunta extremadamente útil, ya que asociaba los conceptos con los operadores: ¿Existen nombres pronunciables para los operadores Haskell comunes?
¿Hay un diccionario equivalente para scalaz? ¿O podría alguien ayudar a dar consejos sobre cómo pronuncian su propio código scalaz?
Scalaz tiene un generador de plantillas para la compatibilidad con Intellij que tiene el operador y el nombre común de un buen número de operadores de Scalaz, solo tiene que revisar el código un poco (y quizás traducir unicode): https://github.com/scalaz/scalaz/blob/release/6.0.4/etc/intellij/livetemplate/generate-live-templates.scala
Desde el archivo:
method("map", "∘", Param("f")),
method("map2", "∘∘", Param("f")),
method("o", "∘", Param("f")),
method("oo", "∘∘", Param("f")),
method("|->", "↦", Param("f")),
method("bind", "∗", Param("f")),
method("plus", "⊹", Param("a")),
method("appendpure", "/u279C:", Param("a")),
method("pluspure", "/u279D:", Param("a")),
method("sum", "∑"),
method("suml", "∑"),
method("exists", "∃", Param("f")),
method("forall", "∀", Param("f")),
method("traversemonoid", "↣", Param("f")),
method("join", "μ"),
method("contramap", "∙", Param("f")),
method("pure", "η"),
function("kleisli", "☆", Param("f")),
function("cokleisli", "★", Param("f")),
method("dual", "σ"),
method("equal", "≟", Param("a")),
method("notequal", "≠", Param("a")),
method(">>>", "⋙", Param("a")),
method("<<<", "⋘", Param("a")),
function("undefined", "⊥"),
method("^", "∧", Param("a")),
method("conjunction", "∧", Param("a")),
method("disjunction", "∨", Param("a")),
method("v", "∨", Param("a")),
method("<==", "/u21D0", Param("a")),
method("zipstream", "/u0290"),
method("mult", "/u220f"),
function("zero", "∅"),
function("x", "×"),
function("=>", "/u21D2"),
method("3", "∋", Param("a")),
method("contains", "∋", Param("a")),
method("memberof", "∈:", Param("a"))
|@|
es el operador del generador de aplicaciones:
scala> (some(3) |@| some(4)) { _ + _ }
res1: Option[Int] = Some(7)
Me gusta considerarlo como el "operador de chelsea bun" (son pasteles con bordes cuadrados y un centro en espiral).
Tiene una variante de Unicode, ⊛
, que generalmente evito ya que se procesa como una burbuja indistinta en tamaños de letra más pequeños.