all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Pascal J. Bourguignon" <pjb@informatimago.com>
To: help-gnu-emacs@gnu.org
Subject: Re: How to quote a list of functions?
Date: Mon, 17 Aug 2015 02:06:23 +0200	[thread overview]
Message-ID: <87zj1qbwxs.fsf@kuiper.lan.informatimago.com> (raw)
In-Reply-To: 87wpwudby7.fsf@nl106-137-147.student.uu.se

Emanuel Berg <embe8573@student.uu.se> writes:

> John Mastro <john.b.mastro@gmail.com> writes:
>
>> I think you have this metaphor backward; all I said
>> was that sharp-quote can be helpful (like
>> indentation), not that you should be compelled to
>> use it.
>>
>> Pascal's point (that the sameness between `quote'
>> and `function' in Emacs Lisp is an implementation
>> detail which, at least in principal, could change)
>> is perhaps stronger, but he's not saying that Emacs
>> Lisp should change to force you to use `quote' and
>> `function' differently.
>
> This discussion is by now nothing but confusing.
>
> The one advantage we have heard is - if it is used,
> the compiler will tell you if the function is defined,
> so it is a safety net for typos and mix-ups.
>
> The disadvantages are:
>
>     - Ugly syntax; and, one less char on that line
>       available.
>     
>     - Not clear when to use it (as this discussion
>       shows).
>
>     - Until you get used to it, you have to stop and
>       think if it should be used or not. You don't
>       want to think about that, but of the problem
>       that you are set to solve - also, the context
>       and function name should already communicate
>       this to you, and with this syntax you may be
>       tempted to be more sloppy with that.

It's quite simple.

When you want a function given a name, you use (function NAME) or #'NAME
which reads equally.

When you want a symbol, you use (quote SYMBOL) or 'SYMBOL which reads
equally.

Accidentally, on the current GNU emacs lisp implementation, 
(function X) and (quote X) return the same thing, the symbol X,

so if you make a mistake and write #'NAME when you need a symbol, you
won't notice it (unless you compile the code and no function named NAME
exist, 

and if you make the opposite mistake, and write 'NAME instead of #'NAME,
then since 1- emacs lisp doesn't have local lexical functions (flet is
just a kludge, not the real thing), and 2- symbols designate the
function they name, ultimately for apply (which is the primitive called
by funcall and all the other high order functions), then it doesn't make
a difference.

Check this AI Koan:
https://en.wikipedia.org/wiki/Hacker_koan#Enlightenment

The problem is not what you do, the problem is what you intend to do.

-- 
__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




  reply	other threads:[~2015-08-17  0:06 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 [this message]
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
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

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

  git send-email \
    --in-reply-to=87zj1qbwxs.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.
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.