gpt4 book ai didi

haskell - Haskell中函数 'floor'类型错误

转载 作者:行者123 更新时间:2023-12-04 03:41:58 24 4
gpt4 key购买 nike

我有一个函数接受 2 个整数 n、x 并计算底数 (log n/log x)。这里 n 和 x 都非常有限,所以 Int 对我来说足够了。


func :: Int -> Int -> Int <br/>
func n x = floor (log . fromIntegral n / (log . fromIntegral x))

但是 ghci 中出现了错误:

No instance for (RealFrac (a -> b))
arising from a use of `floor' at p5_evenly_divide.hs:20:11-63
Possible fix: add an instance declaration for (RealFrac (a -> b))
In the expression:
floor (log . fromIntegral n / (log . fromIntegral x))
In the definition of `func':
func n x = floor (log . fromIntegral n / (log . fromIntegral x))

我怎样才能度过难关?

最佳答案

表达式 log 。 fromIntegral n 等同于 log 。 (fromIntegral n),而不是 (log . fromIntegral) n,这可能是您想要的。不过,log (fromIntegral n) 可能更具可读性。

对于一般启发,当错误消息显示 No instance for (RealFrac (a -> b)) 时,它告诉您它无法弄清楚如何将函数用作小数,它试图这样做是因为您将函数组合 (.) 应用于 fromIntegral n 的结果。在这种情况下有点迟钝。

关于haskell - Haskell中函数 'floor'类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372396/

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