Как преодолеть нехватку локальной переменной для закрытия emacs lisp

Сейчас я изучаю Emacs Lisp из справочное руководство и Common Lisp из книги LISP .

из книги Common Lisp

>> (setf power-of-two
     (let ((previous-power-of-two 1))
       #'(lambda ()
           (setf previous-power-of-two
             (* previous-power-of-two 2)))))

>> (funcall power-of-two)
2

>> (funcall power-of-two)
4

>> (funcall power-of-two)
8

Функция не будет работать в Emacs Lisp из-за ее поведения динамического связывания.

Интересно, можно ли реализовать ту же функцию в Emacs Lisp без введения глобальной переменной?

10
задан Sake 5 August 2011 в 11:29
поделиться