Saya membaca Learn You a Haskell for Great Good , dan saya tidak pernah tahu bagaimana cara mengucapkan operator Haskell. Apakah mereka memiliki nama "asli"? ?
Misalnya, bagaimana Anda membaca dengan keras ekspresi seperti ini?
Just (+3) <*> Just 9
Saya tahu itu >>=
"mengikat", tetapi bagaimana dengan yang lain? Karena Google tidak memasukkan karakter non-alfanumerik ke dalam akun, agak sulit untuk melakukan pencarian yang efisien ...
Saya menyadari Anda dapat membuat operator sendiri, jadi tentu saja tidak semua operator dapat memiliki nama, tetapi saya berharap yang umum (misalnya yang ditentukan dalam Applicative
atau Monad
) harus memiliki nama ...
<*>
diucapkan?" ? Bahkan jika tidak, jawabannya mungkin patut dicoba.()
diucapkan unit. Suatu kali saya menemukan diri saya terjebak di depan audiensi dari beberapa ratus programmer fungsional yang tidak tahu bagaimana cara mengucapkannya pada slide saya.Jawaban:
Inilah cara saya mengucapkannya:
sumber
(.)
adalah "menulis".(.)
sebagaiof
dan($)
sebagaiapplied to
:f . g . h $ x
karenanya dibacaf of g of h applied to x
. Tapi saya mengerti perbedaan dalam sudut pandang ini!(.)
"setelah" lebih masuk akal. Komposisi dapat dilambangkan dalam dua arah, dan menyebutnya "setelah" segera menjelaskan cara kerjanya juga.const 42 . fix id
, dapatkah kita benar-benar mengatakanconst 42
datang "setelah" loop tak terbatas?++
"tambahkan" alih-alihconcat
, karenaconcat
sudah ada di Haskell dan utilitasnya sangat berbeda.sumber
<*
? Apakah ini sangat jarang digunakan sehingga tidak memiliki nama umum?Favorit pribadi saya adalah "ikan kiri" (<= <) dan "ikan kanan" (> =>) . Yang hanya komposisi Kleisli kiri dan kanan dari operator monads. Susun mencurigakan, buat komposisi!
sumber
Saya mengambil kebebasan untuk mengumpulkan jawaban ke dalam program haskell yang sangat sederhana, yang hanya melalui pencocokan pola mencoba menerjemahkan kode haskell ke dalam bahasa Inggris. Saya menyebutnya
letterator
karena menerjemahkan simbol menjadi hurufsumber
sumber
<*>
,>>
...