          with b = 1
                   for new-b = (+ a b)
                   do (snakes:yield a)
                      (setf a b
                            b new-b)))

POFTHEDAY&gt; (snakes:take 20 (fib))
(0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181)

;; Or we can skip first 50 numbers and output 5 next:
POFTHEDAY&gt; (snakes:generator-&gt;list
            (snakes:islice (fib)
                           50 55))
(12586269025 20365011074 32951280099 53316291173 86267571272)</code></pre>