Haskell:与地图函数一起使用时,了解函数应用程序运算符

时间:2019-06-14 01:30:29

标签: haskell functional-programming higher-order-functions

我有以下Haskell表达式:

RecyclerView

我知道函数应用运算符($)将函数应用于给定参数。但是,由于(-),(+)和(*)函数采用两个参数,因此通过将这些函数通过map应用于5,部分地应用了这些函数。

结果列表将包含三个带有另一个参数的函数,并且:

(1)从5减去参数

(2)将参数添加到5

(3)将参数乘以5

但是说上面的表达式等同于下面的表达式是有效的吗?

map ($ 5) [(-),(+),(*)]

我认为这是正确的,因为我检查了GHCI中的(5-),(5 +)和(5 *)类型,它们都是带数字并返回数字的函数:

[(5 -),(5 +),(5 *)]

任何见解都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

正确;您还可以通过以下方式再次应用运算符:

map ($4) $ map ($ 5) [(-),(+),(*)]

产生[5-4, 5 + 4, 5 * 4]

此外,您可以在运算符右边指定参数,从而得到相同的结果:

[((-) 5),(+ 5),(* 5)]

(-) 5带有括号“-”的原因是为了防止编译器认为您的意思是“负5”,即负数,是(- 5)的通常解释)。