我有以下Haskell表达式:
RecyclerView
我知道函数应用运算符($)将函数应用于给定参数。但是,由于(-),(+)和(*)函数采用两个参数,因此通过将这些函数通过map应用于5,部分地应用了这些函数。
结果列表将包含三个带有另一个参数的函数,并且:
(1)从5减去参数
(2)将参数添加到5
(3)将参数乘以5
但是说上面的表达式等同于下面的表达式是有效的吗?
map ($ 5) [(-),(+),(*)]
我认为这是正确的,因为我检查了GHCI中的(5-),(5 +)和(5 *)类型,它们都是带数字并返回数字的函数:
[(5 -),(5 +),(5 *)]
任何见解都会受到赞赏。
答案 0 :(得分:3)
正确;您还可以通过以下方式再次应用运算符:
map ($4) $ map ($ 5) [(-),(+),(*)]
产生[5-4, 5 + 4, 5 * 4]
此外,您可以在运算符右边指定参数,从而得到相同的结果:
[((-) 5),(+ 5),(* 5)]
((-) 5
带有括号“-”的原因是为了防止编译器认为您的意思是“负5”,即负数,是(- 5)
的通常解释)。