Код ниже, начинающийся с digits
, возвращает список целых чисел.Код, начинающийся с altSumOfDigits
, должен возвращать тот же список, но вместо этого Prelude жалуется на ошибку типа, которую я пока не понимаю.
Couldn't match expected type `a' against inferred type `Integer'
digits' :: Integer -> [Integer]
digits' 0 = []
digits' x = (x `mod` 10) : digits' (x `div` 10)
digits :: Integer -> [Integer]
digits 0 = [0]
digits x = reverse $ digits' x
altSumOfDigits :: Integer -> [a]
altSumOfDigits num = [ x | x <- (digits num)]
(я знаю, что altSumOfDigits num = [ x | x <- (digits num)]
довольно бесполезен в этой форме. Я собираюсь расширить его функциональность выражением if и операциями над единственными целыми числами позже.) Любые объяснения, почему это не работает?