这怎么起作用
> (* 30) 4
120
但这不是
> * 30 40
error: parse error on input ‘*’
答案 0 :(得分:6)
(* 30)
是一个部分,它仍然将*
视为二进制(中缀)运算符,只是缺少一个参数,是(\x -> x * 30)
的缩写。括号本身是语法的一部分,而不是可以包含在任意表达式中的显式(但多余)括号。
您可以将(*)
看作是退化的部分,同时缺少两个 参数。否则,在不使用括号的情况下,不能在前缀位置使用中缀运算符。
答案 1 :(得分:2)
Haskell使用特殊语法来部分应用中缀运算符(*
,+
,^
等)。据我所知,它将仅在方括号内起作用。 https://wiki.haskell.org/Section_of_an_infix_operator