相关疑难解决方法(0)

当我在Haskell中用*编写时会发生什么?

我试图了解结果

(*) . (+) 
Run Code Online (Sandbox Code Playgroud)

在哈斯克尔.我知道合成算子只是数学函数的标准组成 - 所以

(f . g) = f (g x)
Run Code Online (Sandbox Code Playgroud)

但:

(*) . (+) :: (Num (a -> a), Num a) => a -> (a -> a) -> a -> a
Run Code Online (Sandbox Code Playgroud)

我很难理解这种类型的签名.我希望能够做到这样的事情:

((*) . (+)) 1 2 :: Num a => a -> a
= (* (+ 1 2))
Run Code Online (Sandbox Code Playgroud)

的意义是什么 (*) .(+)的签名?我尝试用它来玩它(只是匹配它的签名):

((*) . (+)) 1 (\x -> x + 1) 1
Run Code Online (Sandbox Code Playgroud)

但那无法编译.我正在尝试在编写这些步骤时完成逻辑步骤,但我还没有完全理解它是如何得到这个结果的(以及结果什么).

haskell functional-programming function-composition

45
推荐指数
3
解决办法
1526
查看次数