Czytam „ Naucz się Haskella dla wielkiego dobra” i nigdy nie wiem, jak wymówić operatorów Haskell. Czy mają „prawdziwe” imiona? ?
Na przykład, jak odczytujesz na głos takie wyrażenie?
Just (+3) <*> Just 9
Wiem, że >>=
to „wiąże”, ale co z pozostałymi? Ponieważ Google nie bierze pod uwagę znaków niealfanumerycznych, trudno jest przeprowadzić wydajne wyszukiwanie ...
Zdaję sobie sprawę, że możesz tworzyć własne operatory, więc oczywiście nie wszyscy operatorzy mogą mieć nazwy, ale spodziewam się, że wspólne (np. Zdefiniowane w Applicative
lub Monad
) muszą mieć nazwy ...
<*>
wymawia?” ? Nawet jeśli nie jest, jego odpowiedzi prawdopodobnie warto sprawdzić.()
wymawia się jako jednostkę. Pewnego razu utknąłem przed widownią kilkuset funkcjonalnych programistów, którzy nie potrafili wymówić tego na slajdzie.Odpowiedzi:
Oto jak je wymawiam:
źródło
(.)
jest „komponować”.(.)
jakoof
i($)
jakoapplied to
:f . g . h $ x
jest stąd czytanyf of g of h applied to x
. Ale rozumiem rozbieżności w tym punkcie widzenia!(.)
jako „po” jest bardziej sensowne. Kompozycję można oznaczyć w dwóch kierunkach, a nazwanie jej „po” natychmiast wyjaśnia, jak to działa.const 42 . fix id
czy naprawdę możemy powiedzieć, żeconst 42
pojawia się „po” nieskończonej pętli?++
„append” zamiastconcat
, ponieważconcat
jest to już coś w Haskell i jego użyteczność jest bardzo inna.źródło
<*
? Czy jest tak rzadko używany, że nie ma wspólnej nazwy?Moimi osobistymi ulubionymi są „left fish” (<= <) i „right fish” (> =>) . Które są tylko lewą i prawą kompozycją operatorów monad Kleisli. Komponuj podejrzane, komponuj!
źródło
Pozwoliłem sobie zebrać odpowiedzi w bardzo prosty program haskell, który tylko poprzez dopasowanie wzorców próbuje przetłumaczyć kod haskell na angielski. Nazywam to,
letterator
ponieważ tłumaczy symbole na literyźródło
źródło
<*>
,>>
...