¿Qué está pasando en esta función (haskell)?

Tengo esta función haskell que no entiendo muy bien.

ns :: [Integer]
ns = 0 : [n+k | (n, k) <- zip ns [1,3..]]

Me piden "tomar 3 ns".

Pensé que ns era constante, así que solo se comprimirá con el primer elemento de la lista, dando (0,1). Luego, cuando se agrega, da una respuesta de 1. Luego dice "tomar 3 ns", así que comprimí 0 con los primeros 5 elementos de la lista, dando ... (0,1), (0,3), (0,5 ) y luego, cuando se agrega, obtengo una respuesta final de [1,3,5]. Sin embargo, esta no es la respuesta correcta.

¿Qué le está pasando realmente a ns? Estoy luchando para entender ...

Respuestas a la pregunta(5)

Su respuesta a la pregunta