【发布时间】:2019-06-14 01:30:29
【问题描述】:
我有以下 Haskell 表达式:
map ($ 5) [(-),(+),(*)]
我知道函数应用运算符 ($) 将函数应用于给定参数。然而,由于 (-)、(+) 和 (*) 函数有两个参数,通过 map 将这些函数应用于 5,这些函数被部分应用。
结果列表将包含三个接受另一个参数的函数:
(1) 从5中减去参数
(2) 将参数添加到5
(3) 将参数乘以 5
但是说上面的表达式等价于下面的表达式是否有效?
[(5 -),(5 +),(5 *)]
我认为这是正确的,因为我检查了GHCI中的(5 -),(5 +)和(5 *)的类型,它们都是接受数字并返回数字的函数:
(5 -) :: Num a => a -> a
(5 +) :: Num a => a -> a
(5 *) :: Num a => a -> a
感谢任何见解。
【问题讨论】:
-
是的,你的解释是正确的。
标签: haskell functional-programming higher-order-functions