unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, 52063@debbugs.gnu.org
Subject: bug#52063: 28.0.60; Confusing presentation of lambda
Date: Wed, 24 Nov 2021 17:02:12 -0500	[thread overview]
Message-ID: <jwvmtltp6px.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <83r1b571mc.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 24 Nov 2021 22:14:03 +0200")

>> > So I guess the warning about quoting lambdas with ' instead of #' is
>> > actually misleading people into getting these closures instead of the
>> > lambdas they might expect?
>> 
>> A value (lambda ...) is fundamentally a list.  The rest of the system
>> (e.g. the byte-compiler, flymake, ...) can't know if you intend to use
>> this list as a function, so it can't really look inside to compile its
>> body, warn you about typos in its body, or uses of obsolete
>> vars/functions, etc...
>
> I'm talking about evaluation, not about byte-compilation.
> This happened when Emacs was processing my init file.

I'm tlking neither specifically about evaluation nor compilation, I'm
just talking about the meaning of

    '(lambda ...)

which prevents our tools from looking at the code inside of it because
those tools can't tell whether it's supposed to contain source code or
just arbitrary data.

>> It's all about the difference between code and data ;-)
> What difference?  I always thought that in Emacs Lisp there's no such
> difference.

I think saying that "code is data" is misunderstood.  All it means is
that code is exposed as a kind of data, e.g. via macros.

But obviously not every piece of data is a valid and usable piece of code.
And when ELisp knows that a specific piece of data is actually a piece
of code, it can take the liberty to manipulate it accordingly under the
assumption that it's "somewhat opaque" and that the only thing we're
going to do with it is evaluate/run it rather than manipulate it with,
say, `car/cdr`.
E.g. when we load a .el file containing:

    (defun foo (xs) (dolist (x xs) (when x (message "%s" x))))

the `symbol-function` cell of `foo` will not contain

    (dolist (x xs) (when x (message "%s" x)))

> Does lexical-binding change that as well?

It makes the difference a bit bigger.


        Stefan






  reply	other threads:[~2021-11-24 22:02 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-23 18:56 bug#52063: 28.0.60; Confusing presentation of lambda Eli Zaretskii
2021-11-24  7:35 ` Lars Ingebrigtsen
2021-11-24 12:48   ` Eli Zaretskii
2021-11-24 12:51     ` Lars Ingebrigtsen
2021-11-24 13:15       ` Eli Zaretskii
2021-11-24 13:31         ` Lars Ingebrigtsen
2021-11-24 14:38           ` Eli Zaretskii
2021-11-24 16:21             ` Lars Ingebrigtsen
2021-11-24 16:33               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 16:54                 ` Eli Zaretskii
2021-11-24 17:19                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 17:44                     ` Eli Zaretskii
2021-11-24 19:06                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 19:53                         ` Eli Zaretskii
2021-11-24 20:08                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 20:14                             ` Eli Zaretskii
2021-11-24 22:02                               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2021-11-24 22:33                               ` Jim Porter
2021-11-24 22:42                                 ` Jim Porter
2021-11-24 21:10                             ` Eduardo Ochs
2021-11-24 16:40             ` Filipp Gunbin
2021-11-24 16:54               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 18:18                 ` Filipp Gunbin
2021-11-24 19:08                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 19:41                     ` Eli Zaretskii
2021-11-24 19:46                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 19:59                         ` Eli Zaretskii
2021-11-24 20:23                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-24 22:37                             ` Gregory Heytings
2021-11-25  0:09                               ` Filipp Gunbin
2021-11-25  8:57                               ` Michael Heerdegen
2021-11-25 13:09                                 ` Lars Ingebrigtsen
2021-11-25 14:08                                   ` Michael Heerdegen
2021-11-25 14:39                                   ` Gregory Heytings
2021-11-24 20:16                     ` Philipp Stephani
2021-11-24 21:44                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-25  0:13                       ` Filipp Gunbin
2021-11-25 13:15                         ` Lars Ingebrigtsen
2021-11-25 19:07                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-25 19:56                             ` Jim Porter
2021-11-26 12:28                               ` Lars Ingebrigtsen
2021-11-26 12:26                             ` Lars Ingebrigtsen
2021-11-26 13:13                               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-26 13:22                                 ` Lars Ingebrigtsen
2021-11-26 13:26                                   ` Lars Ingebrigtsen
2021-11-26 14:57                                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-26 15:00                                       ` Lars Ingebrigtsen
2021-11-26 16:58                                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-27 14:17                                           ` Lars Ingebrigtsen
2021-11-27 15:28                                             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-29 13:54                                               ` Lars Ingebrigtsen
2021-11-29 17:58                                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-11-30 14:07                                                 ` Michael Heerdegen
2021-11-30 14:20                                                   ` Lars Ingebrigtsen
2021-11-24 16:56               ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvmtltp6px.fsf-monnier+emacs@gnu.org \
    --to=bug-gnu-emacs@gnu.org \
    --cc=52063@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=larsi@gnus.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).