Ral*_*ang 2 floating-point int haskell
我有一个函数接受2个I n,x,并计算floor(log n/log x).这里n和x都非常有限,因此Int对我来说已经足够了.
func :: Int -> Int -> Int
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))
Run Code Online (Sandbox Code Playgroud)
我怎么能通过这个?
C. *_*ann 12
表达式log . fromIntegral n相当于log . (fromIntegral n),而不是(log . fromIntegral) n,这可能是您想要的.只是log (fromIntegral n)可能更可读,虽然.
对于一般的启发,当错误消息说它No instance for (RealFrac (a -> b))告诉你它无法弄清楚如何将函数用作小数时,它正在尝试做,因为你将函数组合(.)应用于结果fromIntegral n.在这种情况下,它有点迟钝.
| 归档时间: |
|
| 查看次数: |
1252 次 |
| 最近记录: |