Ich lerne Haskell. Ich habe eine Funktion erstellt, die die Multiplikationstabelle auf 'n' in der Basis 'b' zurückgibt. Zahlen werden auf "w" Ziffern aufgefüllt. Als letzten Schritt möchte ich 'w' automatisch berechnen. Warum kompiliert das nicht?Keine Instanz für (Floating Int)
-- Number of digits needed for the multiplication table n*n in base 'base'
nOfDg :: Int -> Int-> Int
nOfDg n base = 1 + floor (logBase base (n*n))
Fehler:
No instance for (Floating Int)
arising from a use of `logBase' at C:\haskel\dgnum.hs:4:24-38
Possible fix: add an instance declaration for (Floating Int)
In the first argument of `floor', namely `(logBase b (n * n))'
In the second argument of `(+)', namely `floor (logBase b (n * n))'
In the expression: 1 + floor (logBase b (n * n))
Ich denke, Sie brauchen '(von Integral Basis)' auch. –
@Jason: Nicht mit dem Typ Dan gab diese Funktion, werden Sie nicht. – Chuck
Ja, hängt davon ab, wie Sie es verwenden möchten. Entweder tue ich es, wenn es in Ordnung ist, die Typ-Signatur zu ändern, oder verwende Andys Version, wenn nicht. –