Я уже довольно давно смотрю на этот код, и я не могу обойти это сообщение об ошибке.Haskell: Не ожидалось, что тип «Integer» с фактическим типом «Int»
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)]
"divisors" принимает целое число и возвращает список со всеми его делителями.
«длина» - это то же самое, что и встроенная «длина», только она возвращает целое число.
«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)'
Можете ли вы помочь мне здесь?
С наилучшими пожеланиями, Lukas