Haskell 中缀函数关于优先级的奇怪行为

Haskell 中缀函数关于优先级的奇怪行为,haskell,operator-precedence,Haskell,Operator Precedence,我正在使用bool::a->a->bool->a函数。 我想使用中缀版本,因为我觉得它更可读,但我注意到: (-1) `bool` 1 True 这是一个错误 (-1) `bool` 1 $ True 工作。甚至 (-1) `bool` 1 (True) 不起作用,到目前为止,我一直认为这是一个平等的选择(即使用$而不是从这个位置一直用括号括起来) 这有什么不同呢?在第一个版本中,只有一个操作 中缀运算符绑定松散,应用程序绑定紧密 (-1) `bool` 1 True -- means (

我正在使用
bool::a->a->bool->a
函数。 我想使用中缀版本,因为我觉得它更可读,但我注意到:

(-1) `bool` 1 True
这是一个错误

(-1) `bool` 1 $ True
工作。甚至

(-1) `bool` 1 (True)
不起作用,到目前为止,我一直认为这是一个平等的选择(即使用
$
而不是从这个位置一直用括号括起来)


这有什么不同呢?在第一个版本中,只有一个操作

中缀运算符绑定松散,应用程序绑定紧密

(-1) `bool` 1 True
-- means
(-1) `bool` (1 True)


(-1) `bool` 1 $ True
-- means
((-1) `bool` 1) $ True


(-1) `bool` 1 (True)
-- means
(-1) `bool` (1 (True))
您可能需要:

((-1) `bool` 1) True

我由此得出结论,具有两个以上参数的中缀运算符总是需要特别注意?吹毛求疵:我想你的意思是“推断”。@hgiesel我相信具有两个以上参数的函数通常只在前缀符号中应用。