Oczekuję następującego kodu, aby przekonwertować "15" na liczbę całkowitą i wydrukować wynik, ale spowoduje to błąd.
main = print $ read "15" :: Integer
Couldn't match expected type `Integer' with actual type `IO()'
Ale wystarczy użyć main = print (read "15" :: Integer)
działa dobrze. Miałem wrażenie, że $ efektywnie otacza resztę linii w nawiasach. Dlaczego $ nie działa w tym przypadku?
Mówiąc zwięźle (ale nie całkiem poprawnie), '::' ma nawet niższy priorytet niż '$'. –
Jest to cukier składniowy w Haskell. W przeciwnym razie nie działałoby to z argumentami typu "N". Jest to funkcja w języku PureScript. –