Tôi đang học Haskell. Tôi đã tạo ra chức năng trả về bảng nhân lên đến 'n' trong cơ sở 'b'. Các số được đệm thành chữ số 'w'. Bước cuối cùng, tôi muốn tự động tính toán 'w'. Tại sao điều này không biên dịch?Không có trường hợp nào cho (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))
lỗi:
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))
Tôi đoán bạn cũng sẽ cần '(cơ sở từ gốc) '. –
@ Jason: Không phải với loại Dan đã cho chức năng đó, bạn sẽ không. – Chuck
Vâng, phụ thuộc vào cách bạn muốn sử dụng nó. Hoặc làm điều đó như tôi có nó nếu nó OK để thay đổi chữ ký loại, hoặc sử dụng phiên bản của Andy nếu không. –