Что происходит в этой функции (haskell)?

У меня есть функция haskell, которую я не совсем понимаю.

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

Меня просят "взять 3 нс".

Я думал, что ns является константой, поэтому он будет перемещаться только с первым элементом списка, давая (0,1). Затем при добавлении дает ответ 1. Затем он говорит «возьми 3 нс», поэтому я заархивировал 0 первыми 5 элементами списка, давая ... (0,1), (0,3), (0,5 ) и затем при добавлении я получаю окончательный ответ [1,3,5]. Однако это не правильный ответ.

Что на самом деле происходит с нс? Я изо всех сил пытаюсь понять ...

Ответы на вопрос(5)

Ваш ответ на вопрос