From: "Pascal J. Bourguignon" <pjb@informatimago.com>
To: help-gnu-emacs@gnu.org
Subject: Re: How to quote a list of functions?
Date: Tue, 18 Aug 2015 03:32:26 +0200 [thread overview]
Message-ID: <871tf1bcut.fsf@kuiper.lan.informatimago.com> (raw)
In-Reply-To: mailman.8494.1439859284.904.help-gnu-emacs@gnu.org
Emanuel Berg <embe8573@student.uu.se> writes:
> Barry Margolin <barmar@alum.mit.edu> writes:
>
>> No it doesn't. It looks like it does, but only
>> because sharp-quote just returns the symbol in Emacs
>> Lisp, not a function.
>
> OK.
>
>> The problem is that sharp-quote is just syntactic
>> sugar in Elisp, it doesn't actually do anything
>> different from quote.
>
> This makes it confusing to use.
Not if you realize the above sentence is false.
(cl-flet ((f () 'local))
(function f))
--> (lambda nil (quote local))
>> You don't disable functions, you disable *commands*,
>> and commands are denoted using symbols.
>
> And the symbols look the same as the function's names?
Yes, some functions are named by symbols.
> And commands are functions, only those "interactive"
> (in Emacs lingo)?
Yes.
> So where does that leave functions? And when (and why)
> are they refered to "as such", i.e. not using symbols
> to denote them?
There are several kinds of function objects:
(defun f () 'hello)
(symbol-function 'f) --> (lambda nil (quote hello))
(symbol-function 'sin) --> #<subr sin>
(symbol-function 'find-file) --> #[(filename &optional wildcards)
"<binary data>"
[<constants>]
6 1758059
(byte-code "<binary-data>>"
[<constants>] 3)]
(setf lexical-binding t)
(let ((x 42))
(defun g () x))
(symbol-function 'g) --> (closure ((x . 42) t) nil x)
(byte-compile 'g)
(symbol-function 'g) --> #[nil "\300\207" [42] 1]
> If there are two different syntaxes those should
> indicate two different things and there should be
> a rule that can be expressed in one sentence when each
> should be used.
See above, they are different.
> Even so, I don't see why this should be dealt with on
> the code-level at all. Why not just refer to functions
> by name and then have the functions that accepts them
> (the names) sometimes deal with those as symbols
> denoting commands, sometimes functions (?), and so on,
> and not bother me with it? And interestingly, that is
> exactly how it has been and there were never any
> troubles until I read here I can't do that.
Because:
- some functions don't have a name at all, and
- some functions are actually closures, and
- some functions can escape the lexical environment
where their name is bound.
And basically, you should learn Common Lisp.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
next prev parent reply other threads:[~2015-08-18 1:32 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-08 23:42 How to quote a list of functions? Marcin Borkowski
2015-08-08 23:48 ` Dmitry Gutov
2015-08-09 0:09 ` Marcin Borkowski
2015-08-09 6:18 ` Dmitry Gutov
2015-08-09 8:04 ` Marcin Borkowski
[not found] ` <mailman.7992.1439078979.904.help-gnu-emacs@gnu.org>
2015-08-09 0:33 ` Pascal J. Bourguignon
2015-08-09 8:06 ` Marcin Borkowski
[not found] ` <mailman.8016.1439107624.904.help-gnu-emacs@gnu.org>
2015-08-09 10:26 ` Pascal J. Bourguignon
2015-08-09 10:47 ` Marcin Borkowski
[not found] ` <mailman.8020.1439117265.904.help-gnu-emacs@gnu.org>
2015-08-09 11:42 ` Pascal J. Bourguignon
2015-08-09 1:53 ` Emanuel Berg
2015-08-09 8:05 ` Marcin Borkowski
2015-08-09 15:58 ` Emanuel Berg
[not found] ` <mailman.8033.1439136046.904.help-gnu-emacs@gnu.org>
2015-08-10 0:08 ` Barry Margolin
2015-08-10 2:02 ` Ian Zimmerman
2015-08-11 1:06 ` Emanuel Berg
2015-08-11 1:16 ` Emanuel Berg
[not found] ` <mailman.8102.1439255290.904.help-gnu-emacs@gnu.org>
2015-08-11 6:16 ` Barry Margolin
2015-08-12 2:50 ` Emanuel Berg
[not found] ` <mailman.8167.1439348114.904.help-gnu-emacs@gnu.org>
2015-08-12 7:01 ` Barry Margolin
2015-08-13 1:31 ` Emanuel Berg
2015-08-13 1:56 ` Stefan Monnier
2015-08-13 1:59 ` Emanuel Berg
[not found] ` <mailman.8228.1439429711.904.help-gnu-emacs@gnu.org>
2015-08-13 4:20 ` Pascal J. Bourguignon
2015-08-13 23:55 ` Emanuel Berg
2015-08-14 0:38 ` John Mastro
2015-08-15 1:38 ` Emanuel Berg
2015-08-15 21:16 ` John Mastro
2015-08-16 23:56 ` Emanuel Berg
2015-08-17 0:06 ` Pascal J. Bourguignon
2015-08-17 0:34 ` Emanuel Berg
[not found] ` <mailman.8449.1439771796.904.help-gnu-emacs@gnu.org>
2015-08-17 1:19 ` Pascal J. Bourguignon
2015-08-17 1:40 ` Emanuel Berg
[not found] ` <mailman.8450.1439775768.904.help-gnu-emacs@gnu.org>
2015-08-17 2:31 ` Barry Margolin
2015-08-17 3:07 ` Pascal J. Bourguignon
2015-08-18 0:52 ` Emanuel Berg
[not found] ` <mailman.8494.1439859284.904.help-gnu-emacs@gnu.org>
2015-08-18 1:32 ` Pascal J. Bourguignon [this message]
2015-08-19 0:11 ` Emanuel Berg
2015-08-17 3:04 ` Pascal J. Bourguignon
2015-08-18 1:00 ` Emanuel Berg
2015-08-18 1:54 ` Drew Adams
2015-08-19 0:29 ` Emanuel Berg
2015-08-19 0:48 ` Emanuel Berg
2015-08-19 1:37 ` Drew Adams
2015-08-19 21:57 ` Emanuel Berg
[not found] ` <mailman.8599.1439945431.904.help-gnu-emacs@gnu.org>
2015-08-19 1:54 ` Pascal J. Bourguignon
2015-08-19 3:27 ` Stefan Monnier
2015-08-19 11:54 ` Pascal J. Bourguignon
2015-08-19 22:15 ` get all functions (was: Re: How to quote a list of functions?) Emanuel Berg
[not found] ` <mailman.8499.1439873185.904.help-gnu-emacs@gnu.org>
2015-08-18 5:03 ` How to quote a list of functions? Rusi
2015-08-18 10:43 ` Pascal J. Bourguignon
[not found] ` <mailman.8495.1439859773.904.help-gnu-emacs@gnu.org>
2015-08-18 1:43 ` Pascal J. Bourguignon
2015-08-18 23:46 ` Emanuel Berg
[not found] ` <mailman.8448.1439770003.904.help-gnu-emacs@gnu.org>
2015-08-17 0:15 ` Pascal J. Bourguignon
2015-08-17 6:29 ` tomas
2015-08-18 1:03 ` Emanuel Berg
2015-08-18 7:44 ` tomas
2015-08-18 10:51 ` Marcin Borkowski
2015-08-19 0:34 ` Emanuel Berg
2015-08-19 14:22 ` Marcin Borkowski
2015-08-19 20:21 ` tomas
2015-08-21 19:27 ` Emanuel Berg
[not found] ` <mailman.41.1440185412.11330.help-gnu-emacs@gnu.org>
2015-08-21 20:09 ` Pascal J. Bourguignon
2015-08-21 23:38 ` Emanuel Berg
[not found] ` <mailman.49.1440200400.11330.help-gnu-emacs@gnu.org>
2015-08-21 23:46 ` Pascal J. Bourguignon
2015-08-23 21:39 ` Emanuel Berg
2015-08-23 22:16 ` Emanuel Berg
[not found] ` <mailman.147.1440366096.11330.help-gnu-emacs@gnu.org>
2015-08-23 23:59 ` Pascal J. Bourguignon
2015-08-24 0:39 ` Emanuel Berg
2015-08-24 1:42 ` Emanuel Berg
[not found] ` <mailman.1.1440425878.7866.help-gnu-emacs@gnu.org>
2015-08-24 18:42 ` Pascal J. Bourguignon
2015-08-24 19:43 ` Emanuel Berg
[not found] ` <mailman.33.1440446412.28410.help-gnu-emacs@gnu.org>
2015-08-24 23:32 ` Pascal J. Bourguignon
2015-08-19 22:04 ` Emanuel Berg
[not found] ` <mailman.8506.1439895686.904.help-gnu-emacs@gnu.org>
2015-08-18 11:18 ` Pascal J. Bourguignon
[not found] ` <mailman.8299.1439510265.904.help-gnu-emacs@gnu.org>
2015-08-14 7:56 ` Pascal J. Bourguignon
2015-08-15 1:30 ` Emanuel Berg
[not found] <mailman.7990.1439077354.904.help-gnu-emacs@gnu.org>
2015-08-09 0:30 ` Pascal J. Bourguignon
2015-08-09 1:08 ` Michael Heerdegen
[not found] ` <mailman.7994.1439082517.904.help-gnu-emacs@gnu.org>
2015-08-09 1:23 ` Pascal J. Bourguignon
2015-08-09 8:12 ` Marcin Borkowski
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=871tf1bcut.fsf@kuiper.lan.informatimago.com \
--to=pjb@informatimago.com \
--cc=help-gnu-emacs@gnu.org \
/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.
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).