如何正确使用($)运算符

时间:2010-07-21 13:27:28

标签: haskell syntax

这些行正确执行:

Prelude> 1 / (1 + 1)
0.5
Prelude> (/) 1 $ (+) 1 1
0.5
Prelude> (/) 1 $ 1 + 1
0.5

这个没有:

Prelude> 1 / $ (+) 1 1

<interactive>:1:4: parse error on input `$'

为什么?

2 个答案:

答案 0 :(得分:15)

/是一个中缀运算符。它需要有效的表达方式。 1是一个文字,因此是一个有效的表达。但是,在右侧,你有另一个中缀运算符,它需要在另一个有效表达式之前(1 /不是一个有效的表达式,因为它缺少/运算符的右侧参数)。这就是解析器报告错误的原因(语法无效 - 请参阅haskell报告以获取丑陋的细节;)

答案 1 :(得分:1)

我认为这是因为$是一个需要前面的函数的运算符。上一个示例中的表达式1 /未计算为函数。在这种情况下,解析器期望找到(数字)表达式作为/运算符的第二个参数。