czytam kawałek Bartosz Milewski którym definiuje on następującą funkcję:
instance Applicative Chan where
pure x = Chan (repeat x)
(Chan fs) <*> (Chan xs) = Chan (zipWith ($) fs xs)
Dlaczego operator aplikacji funkcja w nawiasie? Rozumiem, że normalnie robi się to w celu użycia funkcji infiksowej w formie zapisu przedrostkowego, ale nie rozumiem, dlaczego w tym przypadku funkcja nie mogła być po prostu wyrażona jako Chan (zipWith $ fs xs)
i zastanawiam się, jaka jest różnica między te dwie są.
(jeśli trzeba jeszcze kontekst, odnoszą się do article)
byłoby prostsze, jeśli zostało zapisane jako 'Chan (zipWith id fs xs)'? Jest dokładnie taka sama jak obecna implementacja. – Carl
Pamiętaj, że '($)' nie jest jakimś magicznym operatorem pierwotnym: jest to funkcja podobna do '(+)' i 'lub'. – AJFarmar