У меня есть эта функция 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]. Однако это не правильный ответ.
Что на самом деле происходит с ns? Я пытаюсь понять...