Haskellでコラッツ数列を生成する

collatz_chain :: Integer -> [Integer]
collatz_chain 1 = [1]
collatz_chain n
  | even n = n : collatz_chain (div n 2)
  | odd n = n : collatz_chain (n * 3 + 1)
*Main> collatz_chain 1
[1]
*Main> collatz_chain 2
[2,1]
*Main> collatz_chain 3
[3,10,5,16,8,4,2,1]
*Main> collatz_chain 7
[7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1]