Fibs (0 1 ...) (due to (concat [0 1] ... ) at the beginning). (rest fibs) - (1 ...) . Then (map + fibs (rest fibs)) is
((+ 0 1) ...) => (1 ...)
So fibs (0 1 1 ...) . Since we got the following element, we can calculate another one:
(1 (+ 1 1) ...) => (1 2 ...)
And it goes on ...
(1 2 (+ 1 2) ...)
Think of Phoebe as if it were already there, and the state (map + fibs (rest fibs) as moving around a list of existing ones (which is fine because it finishes computing everything we need along the way).
It can also help just write down two sequences:
(0 1 1 2 3 5 ...) +(1 1 2 3 5 ...) =(1 2 3 5 8 ...)
(I would draw arrows here to indicate what we already got and where the result is, but I can't do it so well).
Cubic source share