Haskell的函数连接问题

我定义了以下函数addtofour。

addtofour :: Int -> Int
addtofour x = 4 + x

当我把这个函数加载到ghci中时,它可以正常工作。然而,当我试图将它与LogBase返回的值连接起来时,它却无法工作。

我试过了。

logbase 2 3 -- returns 1.58..
addtofour logBase 2 3 -- error, expected 1.58 + 4 = 5.58
addtofour (logBase 2 3) -- error, expected 1.58 + 4 = 5.58

我希望logBase 2 3能返回一个Int,然后我可以把它放到我的addtofour函数中。但不知为何会失败。我猜这与我的addtofour函数的域有关。f(x) = 4+x does Int -> Int

解决方案:

logBase 的时候,返回的是 1.58,这不是一个 Int. 您的 addtofour 函数只接受 Ints. 你可以通过使类型的 addtofour 通用。

addtofour :: Num a => a -> a

但你的第二个案例还是会失败

addtofour logBase 2 3

这是因为它试图通过 logBase 作为对 addtofour. 你要么需要用括号来明确应用的顺序。

addtofour (logBase 2 3)

或者是 ($) 运算符,具有优先权。

addtofour $ logBase 2 3

本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/1212.html

(0)
上一篇 2022年5月29日 下午8:44
下一篇 2022年5月29日 下午8:44

相关推荐

发表评论

登录后才能评论