Resposta ao exercício 64

Para implementar reposição da sucessão de Fibonacci, é necessário que haja acesso às variáveis de estado do processo. Isto implica que a função repoe-fib tem de estar definida no mesmo âmbito léxico da função gera-fib.

(let ((ultimo 1) (penultimo 0))
  (defun repoe-fib ()
    (setq ultimo 1
          penultimo 0))
  (defun gera-fib ()
    (let ((novo (+ ultimo penultimo)))
      (setq penultimo ultimo
            ultimo novo)
      novo)))

> (gera-fib) 1 > (gera-fib) 2 > (repoe-fib) 0 > (gera-fib) 1