gpt4 book ai didi

haskell - 在 Haskell 中用算术类型函数组合函数

转载 作者:行者123 更新时间:2023-12-01 09:31:25 24 4
gpt4 key购买 nike

我现在正在学习 Haskell,我正在尝试使用函数组合。

我写了两个函数。

让 func1 x y = x + y

让 func2 t = t*2

但是,当我尝试组合这两个函数时,func2 。 func1 1 2 我希望得到 6 个。

相反,我得到了这个错误:

   No instance for (Num (a -> b))
arising from a use of `func1' at <interactive>:1:8-16
Possible fix: add an instance declaration for (Num (a -> b))
In the second argument of `(.)', namely `func1 1 2'
In the expression: func2 . func1 1 2
In the definition of `it': it = func2 . func1 1 2

有人可以解释为什么这不起作用吗?

最佳答案

函数应用程序优先于任何运算符,因此您的组合被解析为 func2 。 (func1 1 2)。也就是说,您的代码尝试组合 func1 1 2 结果的数字,就好像它是一个函数一样。请注意,(func2 . func1) 1 2 也不起作用,因为 (.) 仅适用于一元函数。

可以使用 (func2 . func1 1) 2,或以我不太喜欢的方式多次使用 (.)个人觉得舒服,说实话。但在这种特定情况下,完全不使用组合可能会更好:func2 $ func1 1 2 做同样的事情,减少困惑。

关于haskell - 在 Haskell 中用算术类型函数组合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com