সাধারণ হাস্কেল অপারেটরদের জন্য কি উচ্চারণযোগ্য নাম রয়েছে? [বন্ধ]


204

আমি গ্রেট গুড ফর ইউ হাসাকেল পড়ছি , এবং হাস্কেল অপারেটরদের উচ্চারণ কীভাবে করতে হবে তা আমি কখনই জানি না। তাদের কি "আসল" নাম আছে? ?

উদাহরণস্বরূপ, আপনি কীভাবে এই জাতীয় মত প্রকাশের সাথে উচ্চস্বরে পড়বেন?

Just (+3) <*> Just 9

আমি জানি যে >>="বাঁধাই", তবে অন্যদের কী হবে? গুগল যেহেতু অ-অক্ষরীয় অক্ষরগুলিকে অ্যাকাউন্টে নেয় না, তাই দক্ষ অনুসন্ধান করা একরকম শক্ত ...

আমি বুঝতে পেরেছি যে আপনি নিজের অপারেটর তৈরি করতে পারেন, অবশ্যই সমস্ত অপারেটরের নাম থাকতে পারে না, তবে আমি আশা করি যে সাধারণগুলি (যেমন সংজ্ঞায়িত Applicativeবা Monad) এর অবশ্যই নাম থাকতে হবে ...


এটি একটি ভাল প্রশ্ন এবং আমি কোনও উত্তর সম্পর্কে অবগত নই। সম্ভবত আমাদের একটি নামকরণ প্রকল্প প্রয়োজন, অথবা সম্ভবত গ্রন্থাগারের লেখকদের হ্যাডক ডকসের অংশ হিসাবে উচ্চারণযোগ্য নাম সরবরাহ করা উচিত।
পল জনসন

3
খুব ভাল প্রশ্ন। সাধারণত আমি <প্রয়োগ> "প্রয়োগ" এবং <$> "এফএমএপি" হিসাবে পড়ি। অন্যদের জন্য আমার কোনও ধারণা নেই।
ডুওএসআরএক্স

3
এটি কি "হাস্কেল: কীভাবে <*>উচ্চারণ করা হয়?" এর সদৃশ ? ? যদি তা না হয় তবে এর উত্তরগুলি সম্ভবত চেক করার মতো।
আন্টাল স্পেক্টর-জাবুস্কি

8
এছাড়াও, উচ্চারণে হাস্কেল উইকের পৃষ্ঠাটি দেখুন । এটি অসম্পূর্ণ, তবে প্রাসঙ্গিক।
আন্টাল স্পেক্টর-জাবুস্কি

3
()উচ্চারণ ইউনিট হয়। একসময় আমি নিজেকে কয়েকশো ক্রিয়ামূলক প্রোগ্রামারদের শ্রোতার সামনে আটকে দেখতে পেলাম কীভাবে আমার স্লাইডে কীভাবে এটি উচ্চারণ করতে হয় তা জানে না।
সিগফপে

উত্তর:


194

এখানে আমি তাদের উচ্চারণ করছি:

>> = বাঁধাই
>> তারপর
*> তারপর
-> থেকে                 a -> খ: ক থেকে বি 
<- বাঁধুন               (যেমন এটি <=> এর প্রতি ইচ্ছামত) =
<$> (চ) মানচিত্র
<$ করে মানচিত্র-প্রতিস্থাপন     0 <$ F: "দ্বারা 0 চ মানচিত্র-প্রতিস্থাপন" 
<*> পি (অটলভাবে কাজ করা)            (যেমন Control.Monad.ap হিসাবে একই) 
$                          , (কিছুই নয় ঠিক যেমন "" [হোয়াইটস্পেস] ) 
। পাইপ to            a। বি: "বি পাইপ-টু"
!! সূচক
! সূচক / কড়া     ক! বি: "একটি সূচক বি", ফু ! x: foo কঠোর x 
<|> বা / বিকল্প   এক্সট্রা <|> পদ: "এক্সপ্রেস বা পদ"
++ কনক্যাট / প্লাস / সংযোজন
[] খালি তালিকা
: কনস
:: টাইপ অফ /       এফএক্স :: ইনট: এফএক্স টাইপ ইন্ট
mb ল্যাম্বদা
@ as                 go ll @ (l: ls): go ll as as L cons ls 
~ অলস               গো ~ (ক, খ): অলস জোড়ায় যান, বি

100
আমার কাছে, (.)এটি "রচনা"।
luqui

47
আমি সাধারণত (.)হিসাবে ofএবং ($)হিসাবে উচ্চারণ applied to: f . g . h $ xতাই পড়া হয় f of g of h applied to x। তবে এই দৃষ্টিকোণে আমি বিচ্যুতি বুঝতে পারি!
Ptival

39
আমি মনে করি (.)"পরে" হিসাবে উচ্চারণ করা আরও বুদ্ধিমান। রচনাটি দুটি দিক দিয়ে চিহ্নিত করা যেতে পারে এবং এটিকে "পরে" বলা ততক্ষণে এটি কীভাবে কাজ করে তা ব্যাখ্যা করে।

1
@ টিনটোরিয়াস, রচনাটির পরে বা তার আগে কোনওটি নির্ভরযোগ্য নয় এমন দৃষ্টিভঙ্গির উপর নির্ভর করে। উদাহরণস্বরূপ, মধ্যে const 42 . fix id, আমরা কি বলতে পারি const 42একটি অসীম লুপ "পরে" আসে?
luqui

7
আমি এর ++পরিবর্তে "অ্যাপেন্ড" বলব concat, যেহেতু concatইতিমধ্যে হাস্কেলের একটি জিনিস এবং এর ইউটিলিটিটি একেবারেই আলাদা।
বেনজমিন কোবাচ

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

2
আপনার উত্তরের জন্য ধন্যবাদ. "ডলার সাইক্লোপ" আমাকে হাসিয়ে দিয়েছে :)
টমাস লেভস্ক

9
সাইক্লপ্স একবচন হয়, তাহলে আপনি ড্রপ প্রয়োজন হবে না গুলি । :)

1
কি হবে <*? এটি এত কম ব্যবহৃত হয় যে এর কোনও সাধারণ নাম নেই?
ড্যানইউ এনডোস

29

আমার ব্যক্তিগত পছন্দ "বাম মাছ" হয় (<= <) এবং "ডান মাছ" (> =>) । যা কেবল ম্যান্ডস অপারেটরগুলির বাম এবং ডান ক্লাইসলি রচনা। মজাদার রচনা করুন, রচনা করুন!



8

আমি উত্তরগুলিকে খুব সাধারণ হাস্কেল প্রোগ্রামে একত্রিত করার স্বাধীনতা নিয়েছিলাম, যা কেবলমাত্র প্যাটার্নের সাথে মিলে হ্যাশেল কোডটি ইংরেজিতে অনুবাদ করার চেষ্টা করে। আমি এটি কল করি letteratorকারণ এটি চিহ্নগুলিকে অক্ষরে অনুবাদ করে

-- letterator

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

4
+      plus
-      minus (OR negative OR negate for unary use)
*      multiply OR times
/      divide
.      dot OR compose
$      apply OR of

12
এগুলি বেশ স্পষ্টতই ... আমার প্রশ্নটি আরও বেশি অস্বাভাবিক অপারেটরগুলির সম্পর্কে ছিল <*>, >>...
টমাস লেভস্ক

20
সম্পূর্ণতার জন্য।
টমাস এডিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.