* bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' @ 2010-08-21 21:55 MON KEY 2010-08-21 22:40 ` Stefan Monnier 2010-08-21 22:50 ` Andreas Schwab 0 siblings, 2 replies; 6+ messages in thread From: MON KEY @ 2010-08-21 21:55 UTC (permalink / raw To: 6893 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\b!A\207" [structure backquote-process] 2 1720176] 2) Reproducable on 23.2 with emacs -Q -- /s_P\ ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' 2010-08-21 21:55 bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' MON KEY @ 2010-08-21 22:40 ` Stefan Monnier 2010-08-22 0:17 ` MON KEY 2010-08-21 22:50 ` Andreas Schwab 1 sibling, 1 reply; 6+ messages in thread From: Stefan Monnier @ 2010-08-21 22:40 UTC (permalink / raw To: MON KEY > 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 C-x C-e doesn't evaluate "the expression on the line" but "the last sexp before point". The "last-sexp" is just "8" (try C-M-b to see what it is), so whatever other sexp you put before won't make any difference. Stefan ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' 2010-08-21 22:40 ` Stefan Monnier @ 2010-08-22 0:17 ` MON KEY 2010-08-22 22:49 ` Stefan Monnier 0 siblings, 1 reply; 6+ messages in thread From: MON KEY @ 2010-08-22 0:17 UTC (permalink / raw To: Stefan Monnier; +Cc: 6893, Andreas Schwab On Sat, Aug 21, 2010 at 6:40 PM, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> 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 > > C-x C-e doesn't evaluate "the expression on the line" but "the last sexp > before point". OK. > The "last-sexp" is just "8" (try C-M-b to see what it is), so whatever > other sexp you put before won't make any difference. So what about these? `'#'8 ;=> (quote (function 8)) `#'?\x27?\x23 ;=> (function 39) Where did 35 go? > Stefan -- /s_P\ ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' 2010-08-22 0:17 ` MON KEY @ 2010-08-22 22:49 ` Stefan Monnier 2010-08-24 20:49 ` MON KEY 0 siblings, 1 reply; 6+ messages in thread From: Stefan Monnier @ 2010-08-22 22:49 UTC (permalink / raw To: MON KEY; +Cc: 6893, Andreas Schwab > So what about these? > `'#'8 > ;=> (quote (function 8)) What about it? C-M-b indeed shows that '#'8 is the sexp. > `#'?\x27?\x23 > ;=> (function 39) > Where did 35 go? That's a known shortcoming of syntax tables which aren't able to describe correctly the syntax of Elisp char constants. But again C-M-b shows you correctly what C-x C-e considers as "the last sexp". Stefan ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' 2010-08-22 22:49 ` Stefan Monnier @ 2010-08-24 20:49 ` MON KEY 0 siblings, 0 replies; 6+ messages in thread From: MON KEY @ 2010-08-24 20:49 UTC (permalink / raw To: Stefan Monnier; +Cc: 6893, Andreas Schwab On Sun, Aug 22, 2010 at 6:49 PM, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> So what about these? > >> `'#'8 >> ;=> (quote (function 8)) > > What about it? C-M-b indeed shows that '#'8 is the sexp. > >> `#'?\x27?\x23 >> ;=> (function 39) > My point is that with these C M-b: `'#' `' point is skipped back beyond the sexp at point to "M-b:". Isn't there an implicit list after the last quote created by backquote? It "feels" like there is with these: `#1=#1# ;=> (nil) `','#1=#1# ;=> (quote (nil)) `',#''#1=#1# ;=> (quote (quote (nil))) `',#','#1=#1# ;=> (quote \,) `,#','#1=#1# ;=> \, `',#','nil ;=> (quote \,) `',#',#1=#1# ;=> (quote \,) >> Where did 35 go? > > That's a known shortcoming of syntax tables which aren't able to > describe correctly the syntax of Elisp char constants. Does that affect how the range of "last sexp" is allowed to extend beyond the beginning-of-line only to find some arbitrary word barier a few lines up? > But again C-M-b > shows you correctly what C-x C-e considers as "the last sexp". Yes well, even w/ C M-b hopping its still not a valid sexp for `eval': `#'?\x27?\x23 => (function 39) (eval (function 39)) ;=> 39 (eval `#'?\x27?\x23) ;=> Debugger entered--Lisp error: (wrong-number-of-arguments eval 2) And besides, theres this anomaly too: #&8"\377" ;=> "\377" (actually on Emacs 23.2 its => "ÿ") `#&8"\377" ;=> "\377" (actually on Emacs 23.2 its => "ÿ") `#&8"\x3fffff" ;=> "\377" (actually on Emacs 23.2 its => "ÿ") Which would make sense except that _both_ of these manages to fail "correctly": `'#s `'#s" " !string => Debugger entered--Lisp error: (invalid-read-syntax "#") Despite the fact that C M-b for either of this forms: `'#s(hash-table size 30 data (key1 val1 key2 300)) #s(hash-table size 30 data (key1 val1 key2 300)) puts point just after "#s". I understand that the hash-table read syntax has a higher priority because its newer but the cummulative effect of the various sharpsign quoting/evaluation rules for the immediate sexp before point feels inconsistently biased when viewed in the aggregate. > > > Stefan -- /s_P\ ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' 2010-08-21 21:55 bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' MON KEY 2010-08-21 22:40 ` Stefan Monnier @ 2010-08-21 22:50 ` Andreas Schwab 1 sibling, 0 replies; 6+ messages in thread From: Andreas Schwab @ 2010-08-21 22:50 UTC (permalink / raw To: MON KEY; +Cc: 6893 MON KEY <monkey@sandpframing.com> writes: > But what is the equivalent form which would explain the results for > following: > > `'#'(lambda (b) b)8 > ;=> 8 8 Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-08-24 20:49 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-08-21 21:55 bug#6893: evaluating `'#'(lambda (b) b)8 ; => 8 with `eval-last-sexp' "C-x C-e" in `emacs-lisp-mode' MON KEY 2010-08-21 22:40 ` Stefan Monnier 2010-08-22 0:17 ` MON KEY 2010-08-22 22:49 ` Stefan Monnier 2010-08-24 20:49 ` MON KEY 2010-08-21 22:50 ` Andreas Schwab
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.