我只想知道我们如何知道哪些函数需要括号(),哪些函数不需要?例如Haskell函数中的括号
replicate 100 (product (map (*3) (zipWith max [1,2,3,4,5] [4,5,6,7,8])))
工作正常。但是
replicate 100 (product (map (*3) (zipWith (max [1,2,3,4,5] [4,5,6,7,8]))))
不起作用。这是因为我为zipWith放了一组括号。在这个小例子中,zipWith和max没有括号,但是复制,产品和地图都是这样。一般来说,有一种方法可以知道/找出哪些功能需要括号,哪些功能不需要。
在前者中,'zipWith'应用于3个参数;函数'max'和2个列表。在后者中,它只适用于一个论点;将'max'应用于2个列表的结果。 – pat
在这种情况下,你可以通过明智地使用函数组合来消除大部分的parens:'replicate 100。产品。 map(* 3)$ zipWith max [1,2,3,4,5] [4,5,6,7,8]' – pat
@pat True,但对于找出圆括号的函数不太有帮助 – Cubic