好的,今天是漫长的一天,我的大脑可能无法像Haskell一样运转,但我就是无法理解“学习Haskell”中的一个例子。
这一部分叫做“使用$进行函数应用”,其中有一个示例可以说明如何定义
现在
还有一个谜:
这一部分叫做“使用$进行函数应用”,其中有一个示例可以说明如何定义
$
。($) :: (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
的结果。但是这是如何实现的呢?
从第一段代码片段中可以明确看出第一个参数是一个函数,我们甚至可以写成:
*Main> ($) sqrt 4
2.0
现在
($ 3)
是函数$
的部分应用,但3
出现在函数的位置!那么3
应该是一个函数还是什么?还有一个谜:
(4+)
到底是什么?我知道(+4)
是函数+
的部分应用,所以(4+)
应该是函数4
的部分应用吗?荒谬。这里使用了什么样的技巧?