hsk*_*new 6 haskell function function-composition
我在这里阅读,我注意到,例如,如果我有以下函数定义:
a :: Integer->Integer->Integer
b :: Integer->Bool
Run Code Online (Sandbox Code Playgroud)
以下表达式无效:
(b . a) 2 3
Run Code Online (Sandbox Code Playgroud)
组合的功能必须只有一个参数,这很奇怪.
这个限制是因为在Haskell中定义最通用的一个问题还是有其他原因?
我是Haskell的新手,所以我问的也许是无用的问题.
当你这样做时a 2 3,你不会申请a2个参数.你实际上是应用a它唯一的参数,产生一个函数,然后把这个函数应用到3.所以你实际上做了2个应用程序.所以从某种意义上说,你所拥有的并不等同于此:
a :: (Integer, Integer) -> Integer
b :: Integer -> Integer
(b . a) (2, 3)
Run Code Online (Sandbox Code Playgroud)
你可以做到这一点,顺便说一句
(b . a 2) 3
Run Code Online (Sandbox Code Playgroud)