嵌入式函式呼叫中的括號

在前面的示例中,我們最終不需要括號,因為它們不會影響語句的含義。但是,它們通常需要更復雜的表達,如下所示。
在 C:

plus(a, take(b, c));

在 Haskell 中,這變為:

(plus a (take b c))
-- or equivalently, omitting the outermost parentheses
plus a (take b c)

請注意,這不等於:

plus a take b c -- Not what we want!

有人可能認為,因為編譯器知道 take 是一個函式,它將能夠知道你想將它應用於引數 bc,並將其結果傳遞給 plus
但是,在 Haskell 中,函式通常將其他函式作為引數,並且函式和其他值之間幾乎沒有實際的區別; 所以編譯器不能僅僅因為 take 是一個函式而假設你的意圖。

因此,最後一個示例類似於以下 C 函式呼叫:

plus(a, take, b, c); // Not what we want!