Estoy aprendiendo Haskell. He creado una función que devuelve la tabla de multiplicar hasta 'n' en la base 'b'. Los números se rellenan con dígitos 'w'. Como último paso, quiero calcular 'w' automáticamente. ¿Por qué esto no compila?No hay instancia para (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))
error:
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))
Supongo que también necesitará '(fromIntegral base)'. –
@Jason: No con el tipo que Dan le dio a esa función, no lo harás. – Chuck
Sí, depende de cómo quieras usarlo. O lo hago como si lo tuviera si está bien para cambiar la firma del tipo, o si no uso la versión de Andy. –