Существуют ли объявляемые имена для обычных операторов Haskell?

Я читаю « Learn You a Haskell for Great Good» , и я никогда не знаю, как произносить операторы Haskell. У них есть «настоящие» имена? ?

Например, как вы читаете вслух выражение, подобное этому?

Just (+3)  Just 9 

Я знаю, что >>= это «привязка», но как насчет других? Поскольку Google не учитывает не буквенно-цифровые символы, трудно сделать эффективный поиск …

Я понимаю, что вы можете создавать своих собственных операторов, поэтому, конечно, не все операторы могут иметь имена, но я ожидаю, что общие (например, те, которые определены в Applicative или Monad ) должны иметь имена …

Вот как я произношу их:

 >> = bind
 >> затем
 *> затем
 -> a -> b: a до b
 <- bind (поскольку он desugars to >> =)
 <$> (f) map
 <$ map-replace на 0 <$ f: "f map-replace на 0"
 <*> ap (ply) (так же, как Control.Monad.ap)
 $ (нет, так же, как "" [пробелы])
 ,  труба к a.  b: "b pipe-to a"
 !!  индекс
 !  index / strict a!  b: «индекс b», foo! x: foo strict x
 <|> или / alternative expr <|> term: "expr или term"
 ++ concat / plus / append
 [] пустой список
 : минусы
 :: of type / as fx :: Int: fx типа Int
 \ lambda
 @ как go ll @ (l: ls): go ll as l cons ls
 ~ lazy go ~ (a, b): идти ленивой парой a, b
 | sym | pronunciation | |------|--------------------------------------------------| | | | "such that" | | <- | "is drawn from" | | = | "is defined to be" / "is defined as" | | :: | "has type" / "of type" / "is of type" | | -> | "a function that takes ... and returns a ..." / | | | "function that maps" / | | | "is a function from" / | | | "to" | | $ | "apply" | | _ | "whatever" | | !! | "index" | | ++ | "concat" | | [] | "empty list" | | : | "cons" | | \ | "lambda" | | => | "implies" / "then" | | *> | "then" | | <$> | "fmap" / "dollar cyclops" | | <$ | "map-replace by" | | <*> | "ap" / "star cyclops" | | . | "pipe to" / "compose" / "dot" | | <|> | "or" | | @ | "as" | | ~ | "lazy" | | <=< | "left fish" | 

Моими фаворитами являются «левая рыба» (<= <) и «правая рыба» (> =>) . Который является только левой и правой композицией Клейсли монад-операторов. Составьте рыбу, составьте!

Я взял на себя смелость собрать ответы в очень простой программе haskell только через сопоставление образцов, чтобы перевести код haskell на английский.

 -- literator main = translateLn <$> getLine >>= putStrLn translateLn :: String -> String translateLn = unwords . map t . words t :: String -> String -- t(ranslate) -- historical accurate naming t "=" = "is equal too" -- The Whetstone of Witte - Robert Recorde (1557) -- proposed namings -- src http://stackoverflow.com/a/7747115/1091457 t ">>=" = "bind" t "*>" = "then" t "->" = "to" -- a -> b: a to b t "<$" = "map-replace by" -- 0 <$ f: "f map-replace by 0" t "<*>" = "ap(ply)" -- (as it is the same as Control.Monad.ap) t "!!" = "index" t "!" = "index/strict" -- a ! b: "a index b", foo !x: foo strict x t "<|>" = "or/alternative" -- expr <|> term: "expr or term" t "[]" = "empty list" t ":" = "cons" t "\\" = "lambda" t "@" = "as" -- go [email protected](l:ls): go ll as l cons ls t "~" = "lazy" -- go ~(a,b): go lazy pair a, b -- t ">>" = "then" -- t "<-" = "bind" -- (as it desugars to >>=) -- t "<$>" = "(f)map" -- t "$" = "" -- (none, just as " " [whitespace]) -- t "." = "pipe to" -- a . b: "b pipe-to a" -- t "++" = "concat/plus/append" -- t "::" = "ofType/as" -- fx :: Int: fx of type Int -- additional names -- src http://stackoverflow.com/a/16801782/1091457 t "|" = "such that" t "<-" = "is drawn from" t "::" = "is of type" t "_" = "whatever" t "++" = "append" t "=>" = "implies" t "." = "compose" t "<=<" = "left fish" -- t "=" = "is defined as" -- t "<$>" = "(f)map" -- src http://stackoverflow.com/a/7747149/1091457 t "$" = "of" -- src http://stackoverflow.com/questions/28471898/colloquial-terms-for-haskell-operators-eg?noredirect=1&lq=1#comment45268311_28471898 t ">>" = "sequence" -- t "<$>" = "infix fmap" -- t ">>=" = "bind" -------------- -- Examples -- -------------- -- "(:) <$> Just 3 <*> Just [4]" -- meaning "Cons applied to just three applied to just list with one element four" t "(:)" = "Cons" t "Just" = "just" t "<$>" = "applied to" t "3" = "three" -- this is might go a bit too far t "[4]" = "list with one element four" -- this one too, let's just see where this gets us -- additional expressions to translate from -- src http://stackoverflow.com/a/21322952/1091457 -- delete (0, 0) $ (,) <$> [-1..1] <*> [-1..1] -- (,) <$> [-1..1] <*> [-1..1] & delete (0, 0) -- liftA2 (,) [-1..1] [-1..1] & delete (0, 0) t "(,)" = "tuple constructor" t "&" = "then" -- flipped `$` -- everything not matched until this point stays at it is tx = x 
 + plus - minus (OR negative OR negate for unary use) * multiply OR times / divide . dot OR compose $ apply OR of 
  • Что означают все символические операторы Scala?
  • Математическая цепочка оператора сравнения - как и в случае, если ((5 <j <= 1)) "
  • что означает | = (единственная единственная труба) и & = (одиночные амперсанды равны)
  • using и (&&) оператор в скрипте if инструкции bash
  • Есть ли эквивалент VB.NET для C # ''? ' оператор?
  • Что нужно переопределить в структуре, чтобы обеспечить правильное функционирование равенства?
  • Почему выражение a = a + b - (b = a) дает предупреждение о точке последовательности в c ++?
  • Что означает $ mean / do в Haskell?
  • Для чего нужен оператор?
  • Оператор VBA «И» оценивает второй аргумент, когда первый является ложным?
  • Что означает «| =»? (оператор равных труб)
  • Давайте будем гением компьютера.