3
我一直在盯着這段代碼很長一段時間了,我無法理解這個錯誤信息。Haskell:實際類型'Int'無法預期類型'Integer'
divisors :: Integer -> [Integer]
divisors n = [t | t <- [1..n], mod n t == 0]
length' :: [a] -> Integer
length' [] = 0
length' (x:xs) = 1 + length' xs
divLengths :: [(Integer, Integer)]
divLengths = [(n, length' (divisors n)) | n <- [1..]]
divLengths' :: [Integer]
divLengths' = [length' (divisors n) | n <- [1..]]
hcn :: [Integer]
hcn = [n | n <- [1..], max (take n divLengths') == length' (divisors n)]
「除數」取整數並返回一個列表及其所有除數。
「長度」與內置的「長度」相同,只有它返回一個整數。
「divLengths」是Integer的元組的無限列表及其除數的個數。
「divLengths」只返回數字的除數。
「hcn」應該是一個高度複合數字的無限列表(如果除數的數目與所有數字的所有除數的最大數目相同(直到被檢查的數字))。
不過,我得到試圖加載名爲.hs在ghci中,當這個錯誤:
Couldn't match expected type `Integer' with actual type `Int'
In the first argument of `divisors', namely `n'
In the first argument of length', namely `(divisors n)'
In the second argument of `(==)', namely `length' (divisors n)'
能否請你幫我在這裏?
最好的問候, 盧卡斯