scala functional-programming scalaz

¿Nombres pronunciables para operadores scalaz?



functional-programming (3)

Algunos de los más utilizados para mí:

  • y son alias para map y contramap respectivamente. Sin embargo, solo uso esos alias para la instancia de Functor 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.