【发布时间】:2014-11-01 20:07:55
【问题描述】:
好吧,这已经是漫长的一天,我的大脑可能无法在 Haskell 水平上运作,但我就是无法理解“Learn You a Haskell”中的一个例子。
该部分称为 Function Application with $,并且有一个如何定义 $ 的示例:
($) :: (a -> b) -> a -> b
f $ x = f x
到目前为止,一切都清楚了。我理解本节中的所有示例,除了最后一个:
ghci> map ($ 3) [(4+), (10*), (^2), sqrt]
[7.0,30.0,9.0,1.7320508075688772]
在这里,我们将($ 3) 映射到函数列表中,并将这些函数应用到3 的结果。但这怎么可能呢?
从第一个代码 sn-p 可以看出,第一个参数是一个函数,我们甚至可以这样写:
*Main> ($) sqrt 4
2.0
现在($ 3) 是函数$ 的部分应用,但3 继续函数的位置!那么3 应该是一个函数还是什么?
还有一个谜团:(4+) 到底是什么?我知道(+4)是函数+的部分应用,那么(4+)应该是函数4的部分应用?废话。这里有什么技巧?
【问题讨论】:
标签: function haskell operators partial-application operator-sections