Erro “Nenhuma instância para (Num [t])” na função Collatz
Eu sou novo em Haskell, e programação em geral. Estou tentando definir uma função que gera a sequência de números Collatz den. Eu tenho:
collatz n = (collatz' n) : 1
where collatz' n = (takeWhile (>1) (collatz'' n))
where collatz'' n = n : collatz'' (collatz''' n)
where collatz''' 1 = 1
collatz''' n = if (even n) then (div n 2) else ((3*2)+1)
Quando executo isso no GHCi, recebo o erro:
No instance for (Num [t])
arising from the literal `2' at <interactive>:1:7
Possible fix: add an instance declaration for (Num [t])
Não sei o que isso significa. O problema parece estar anexando "1" à lista. Esse problema surge porque
collatz' n = (takeWhile (>0) (collatz'' n))
gera uma sequência infinita de "1" s após a sequência correta de Collatz; Contudo,
collatz' n = (takeWhile (>1) (collatz'' n))
gera todos os números Collatz den exceto "1". O que estou fazendo errado?