Subject: bug#15139: 24.3; Error in section 11.9.3 of the Elisp Reference Manual

From: Thierry Volpiatto <[email-masked]>
Date: Tue, 20 Aug 2013 13:08:31 +0200

Sian Mountbatten <[email-masked]> writes:

> In section 11.9.3 Lexical Binding of the Elisp Reference Manual, the
> following forms are given:
>
> (defvar my-ticker nil)  ; comment
>
> (let ((x 0))
>      (setq my-ticker (lambda ()
>                        (setq x (1+ x)))))
>
> (funcall my-ticker)
>
> The manual says that the 3rd form (funcall...) yields `1'. When these
> forms are evaluated using C-xC-e, the 3rd form enters the debugger with
> the error `void variable x'.

The manual is speaking of lexical binding, try this or use the code
above in a lexical-binding environment:

(defvar my-ticker nil)  ; comment

(lexical-let ((x 0))
  (setq my-ticker (lambda ()
                    (setq x (1+ x)))))

(funcall my-ticker)

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997