- 普通的函数应用(两个事物之间的一个空格)具有较高的优先级,而$函数具有最低的优先级、
- 带空格的函数应用是在左边结合(f a b c和((f a) b ) c是一样的,带$的函数是在右边结合的
- 当遇到$时,$右边的表达作为参数引用到$左边的函数
- 这是一个很方便的函数,不需要输入很多括号
如下
sum (map sqrt [1..130])
sum $ map sqrt [1..130]
sqrt (3 + 4 + 9)
sqrt $ 3 + 4 + 9
sum (filter (> 10) (map (* 2) [2..10]))
sum $ filter (> 10) $ map (* 2) [2..10]
除了去掉括号之外,由于curry的存在还意味着可以将$ x视为一个函数,如下
map ($ 3) [(4 +), (10 *), (^ 2), sqrt]