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

Van*_*uel 1 syntax haskell

这些行正确执行:

Prelude> 1 / (1 + 1)
0.5
Prelude> (/) 1 $ (+) 1 1
0.5
Prelude> (/) 1 $ 1 + 1
0.5
Run Code Online (Sandbox Code Playgroud)

这个没有:

Prelude> 1 / $ (+) 1 1

<interactive>:1:4: parse error on input `$'
Run Code Online (Sandbox Code Playgroud)

为什么?

Pio*_*ski 15

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