为什么我可以写第一个版本而不是第二个版本?

时间:2013-04-25 16:34:59

标签: haskell

我们正在努力学习Haskell(大约第五次!)并且仍然在努力解决一些基本问题。

那我该怎么写

main = print (map (* 2) [1..5])

但我不能写

myfunc x =
   map ( (+ x) [1..5])

main = print (myfunc 2)

任何指导都会受到赞赏---我们有通常的书,但他们并没有真正帮助。

2 个答案:

答案 0 :(得分:11)

你的括号错了。你想要:

myfunc x = map (+x) [1..5]

答案 1 :(得分:9)

希望清除任何引起误解的错误:在Haskell中,函数应用程序是左关联,比任何中缀运算符更高“优先级”,并且不需要任何括号。括号仅用于对子表达式进行分组:(f x) yf x y相同,而f (g x)需要括号。