Czy istnieją wymowne nazwy dla zwykłych operatorów Haskell? [zamknięte]
Czytam Naucz się Haskell dla wielkiego dobra, i nigdy nie wiem, jak wymówić operatory Haskella. Czy mają "prawdziwe" nazwiska? ?
Na przykład, jak można odczytać na głos wyrażenie takie jak to?
Just (+3) <*> Just 9
Wiem, że >>=
to "bind", ale co z innymi? Ponieważ Google nie bierze pod uwagę znaków niealfanumerycznych, trudno jest przeprowadzić skuteczne wyszukiwanie...
Applicative
lub Monad
) muszą mieć nazwy... 179
5 answers
Oto jak je wymawiam:
>>= bind >> then *> then -> to a -> b: a to b <- bind (as it desugars to >>=) <$> (f)map <$ map-replace by 0 <$ f: "f map-replace by 0" <*> ap(ply) (as it is the same as Control.Monad.ap) $ (none, just as " " [whitespace]) . pipe to a . b: "b pipe-to a" !! index ! index / strict a ! b: "a index b", foo !x: foo strict x <|> or / alternative expr <|> term: "expr or term" ++ concat / plus / append [] empty list : cons :: of type / as f x :: Int: f x of type Int \ lambda @ as go ll@(l:ls): go ll as l cons ls ~ lazy go ~(a,b): go lazy pair a, b
173
Author: fuz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-31 17:22:06
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-31 17:22:06
| 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" |
35
Author: Bob Ueland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-09 09:23:38
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-09 09:23:38
Moje Ulubione to "lewa ryba" ( I "right fish" (>=>). Które są tylko lewą i prawą kompozycją Kleisli operatorów monad. Skomponuj fishy, skomponuj!
26
Author: Robert Massaioli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-20 09:03:08
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-20 09:03:08
Pozwoliłem sobie zebrać odpowiedzi do bardzo prostego programu haskell tylko poprzez dopasowanie wzorców próbuje przetłumaczyć kod haskell na język angielski.
-- 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 ll@(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" -- f x :: Int: f x 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-e-g?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
t x = x
5
Author: davidDavidson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 08:03:21
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 08:03:21
+ plus
- minus (OR negative OR negate for unary use)
* multiply OR times
/ divide
. dot OR compose
$ apply OR of
3
Author: Thomas Eding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-26 18:47:19
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-26 18:47:19