J'ai une fonction acceptant 2 Ints n, x, et calcule floor (log n/log x). Ici n et x sont tous les deux très limités donc Int est suffisant pour moi.Erreur de type de la fonction 'floor' dans Haskell
func :: Int -> Int -> Int
func n x = floor (log . fromIntegral n/(log . fromIntegral x))
Mais voici l'erreur dans 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))
Comment puis-je passer à travers cela?
J'aime la façon dont vous explique à la fois le problème et comment le dépanner. C'est vraiment utile. – Chuck
merci, ça fonctionne. –
Je pensais que le message d'erreur disait 'floor' devrait être utilisé sur un RealFrac, donc j'ai continué à attaquer dans la mauvaise direction. –