Haskell: 了解与 map 函数一起使用时的函数应用运算符
Haskell: Understanding function application operator when used with map function
我有以下 Haskell 表达式:
map ($ 5) [(-),(+),(*)]
我知道函数应用运算符 ($) 将函数应用于给定参数。但是由于(-)、(+)、(*)函数有两个参数,所以通过map把这些函数应用到5上,就部分应用了函数。
生成的列表将包含三个采用另一个参数的函数,并且:
(1) 从5中减去参数
(2) 将参数添加到 5
(3) 将参数乘以 5
然而,上面的表达式等价于下面的表达式是否有效?
[(5 -),(5 +),(5 *)]
我认为这是正确的,因为我在GHCI中检查了(5 -),(5 +)和(5 *)的类型,它们都是带数字和return a的函数人数:
(5 -) :: Num a => a -> a
(5 +) :: Num a => a -> a
(5 *) :: Num a => a -> a
如有任何见解,我们将不胜感激。
正确;您还可以通过以下方式再次应用运算符:
map () $ map ($ 5) [(-),(+),(*)]
生产[5-4, 5 + 4, 5 * 4]
此外,您可以在运算符右侧指定参数,得到相同的结果:
[((-) 5),(+ 5),(* 5)]
((-) 5
之所以有“-”括号,是为了防止编译器认为你的意思是 "minus five",负数,(- 5)
的通常解释) .
我有以下 Haskell 表达式:
map ($ 5) [(-),(+),(*)]
我知道函数应用运算符 ($) 将函数应用于给定参数。但是由于(-)、(+)、(*)函数有两个参数,所以通过map把这些函数应用到5上,就部分应用了函数。
生成的列表将包含三个采用另一个参数的函数,并且:
(1) 从5中减去参数
(2) 将参数添加到 5
(3) 将参数乘以 5
然而,上面的表达式等价于下面的表达式是否有效?
[(5 -),(5 +),(5 *)]
我认为这是正确的,因为我在GHCI中检查了(5 -),(5 +)和(5 *)的类型,它们都是带数字和return a的函数人数:
(5 -) :: Num a => a -> a
(5 +) :: Num a => a -> a
(5 *) :: Num a => a -> a
如有任何见解,我们将不胜感激。
正确;您还可以通过以下方式再次应用运算符:
map () $ map ($ 5) [(-),(+),(*)]
生产[5-4, 5 + 4, 5 * 4]
此外,您可以在运算符右侧指定参数,得到相同的结果:
[((-) 5),(+ 5),(* 5)]
((-) 5
之所以有“-”括号,是为了防止编译器认为你的意思是 "minus five",负数,(- 5)
的通常解释) .