Haskell如何评估表达式

时间:2018-12-17 15:03:38

标签: haskell expression

这怎么起作用

> (* 30) 4
120

但这不是

> * 30 40
error: parse error on input ‘*’

2 个答案:

答案 0 :(得分:6)

(* 30)是一个部分,它仍然将*视为二进制(中缀)运算符,只是缺少一个参数,是(\x -> x * 30)的缩写。括号本身是语法的一部分,而不是可以包含在任意表达式中的显式(但多余)括号。

您可以将(*)看作是退化的部分,同时缺少两个 参数。否则,在不使用括号的情况下,不能在前缀位置使用中缀运算符。

答案 1 :(得分:2)

Haskell使用特殊语法来部分应用中缀运算符(*+^等)。据我所知,它将仅在方括号内起作用。 https://wiki.haskell.org/Section_of_an_infix_operator