GNU bug report logs - #6893
evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode'

Previous Next

Package: emacs;

Reported by: MON KEY <monkey <at> sandpframing.com>

Date: Sat, 21 Aug 2010 21:54:02 UTC

Severity: normal

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: MON KEY <monkey <at> sandpframing.com>
To: bug-gnu-emacs <at> gnu.org
Subject: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e"
	in `emacs-lisp-mode'
Date: Sat, 21 Aug 2010 17:55:03 -0400
Interactive invocation of `eval-last-sexp' (e.g. "C-x C-e" ) in
Emacs-lisp mode buffer for this form:

 `'#'(lambda (b) b)8
 ;=> 8

`eval-last-sexp' for this makes (some) sense:

 `'#'(lambda (b) b)
 ;=> (quote (function (lambda (b) b)))

And so, presumably the above is equivalent to:

 (eval '(list 'quote '(function (lambda (b) b))))
 ;=> (quote (function (lambda (b) b)))

But what is the equivalent form which would explain the results for
following:

 `'#'(lambda (b) b)8
 ;=> 8

Surely it isn't this:

 (funcall (eval (eval (eval '(list 'quote '(function (lambda (b) b)))))) 8)
 ;=> 8

If it is, then why is eval'ing the same `'#'(lambda (b) b)8 form with
`eval-expression' (e.g. "M-:") met with the message:

 "Trailing garbage following expression"

Likewise, giving `eval-expression' this form lands me in the debugger:

 (`'#'(lambda (b) b) 8)

 ;=> Debugger entered--Lisp error:
     (wrong-number-of-arguments #[(structure) "\301!A\207"
                                  [structure backquote-process] 2 1720176] 2)

Reproducable on 23.2 with emacs -Q

--
/s_P\




This bug report was last modified 14 years and 275 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.