¿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?
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"))
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 paramap
ycontramap
respectivamente. Sin embargo, solo uso esos alias paraFunctor
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"
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.
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