¿Nombres pronunciables para operadores de scalaz?


Mientras aprendía Haskell, encontré la respuesta a esta pregunta extremadamente útil, ya que asociaba los conceptos con los operadores: ¿Hay nombres pronunciables para operadores Haskell comunes?

¿ Hay un diccionario equivalente para scalaz? ¿O podría alguien ayudar a proporcionar consejos sobre cómo pronunciar su propio código scalaz?

Author: Community, 2013-01-23

3 answers

Scalaz tiene un generador de plantillas para la compatibilidad con Intellij que tiene el operador y el nombre común para bastantes operadores de scalaz, solo tiene que mirar a través del código un poco(y tal vez traducir algunos unicode): https://github.com/scalaz/scalaz/blob/release/6.0.4/etc/intellij/livetemplate/generate-live-templates.scala

Del 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"))
 22
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-14 13:05:29

Algunos de los más utilizados para mí:

  • y son alias para map y contramap respectivamente. Sin embargo, solo uso esos alias para Functor instancia de una función ((->) a), por lo tanto los llamo compose.
  • y |-> tra traverse
  • (de scalaz 6) bottom bottom
  • y |+| plus además, mappend
  • zero cero
  • >>= bind bind
  • >=> fish pescado
  • operadores de igualdad de tipo seguro (=== y /==) just solo es igual / no es igual
  • σ (de scalaz 6) dual dual
  • <*> after después de leer el post reciente de Tony Morris , llamándolo "el operador de la nave estelar"
 11
Author: folone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-23 11:07:08

|@| es el operador Constructor aplicativo:

scala> (some(3) |@| some(4)) { _ + _ }
res1: Option[Int] = Some(7)

Me gusta considerarlo como el "chelsea bun operator" (son pasteles con bordes cuadrados y un centro en espiral).

Tiene una variante Unicode, , que generalmente evito ya que se representa como un blob indistinto en tamaños de fuente más pequeños.

 5
Author: Ben James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-23 12:10:32