Подтвердить что ты не робот

Высказываемые имена для операторов scalaz?

Во время обучения Haskell я нашел ответ на этот вопрос чрезвычайно полезным, поскольку он ассоциировал понятия с операторами: Есть ли объявляемые имена для общих операторов Haskell?

Есть ли эквивалентный словарь для scalaz? Или кто-то может помочь дать совет о том, как они произносят свой собственный код сказуса?

4b9b3361

Ответ 1

У Scalaz есть генератор шаблонов для совместимости Intellij, у которого есть оператор и общее имя для довольно многих операторов scalaz, вам просто нужно немного просмотреть код (и, возможно, перевести некоторый юникод): https://github.com/scalaz/scalaz/blob/release/6.0.4/etc/intellij/livetemplate/generate-live-templates.scala

Из файла:

  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"))

Ответ 2

Некоторые из самых используемых для меня:

  • и - это псевдонимы для map и contramap соответственно. Хотя, я использую только эти псевдонимы для Functor экземпляра функции ((->) a), поэтому я их называю compose.
  • и |-> - траверс
  • (из scalaz 6) - bottom
  • и |+| - plus, mappend
  • - ноль
  • >>= - bind
  • >=> - рыба
  • типы операторов равенства (=== и /==) - просто равно/не равно
  • σ (из scalaz 6) - double
  • <*> - после прочтения недавнего сообщения Тони Морриса, называя его "оператором звездолета"

Ответ 3

|@| - оператор Applicative Builder:

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

Мне нравится думать об этом как о "операторе булочки с хелсой" (это пирожные с квадратными краями и спиралевидной средой).

Он имеет вариант Unicode, , который я обычно избегаю, поскольку он отображает как нечеткое blob при меньших размерах шрифта.