bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#32284: special form documentation


From: Brett Gilio
Subject: bug#32284: special form documentation
Date: Thu, 26 Jul 2018 19:04:32 -0500
User-agent: mu4e 1.0; emacs 27.0.50


Nicholas Drozd writes:

The Elisp manual section on Special Forms (10.2.7) lists around two dozen
special forms, but two of them aren't special forms.

* `lambda', it turns out, is not a special form, but a macro that wraps itself in a call to the special form `function'. (The documentation for `lambda' refers to it as "self-quoting"; this might be better changed to
"self-evaluating".)

* `track-mouse' isn't a special form, but a macro wrapper around the primitive function `internal--track-mouse', which isn't a special form either. (Section 29.15 on Mouse Tracking also inaccruately refers to
`track-mouse' as a special form.)

On the other hand, the special form `inline' is not listed in the Special
Forms section.

A list of all special forms can be gotten with

(let (special-forms)
  (mapatoms
   (lambda (sym)
     (when (special-form-p sym)
       (push sym special-forms))))
  (sort special-forms #'string<))

Hi Nicholas,

Thank you for the note. As far as I can see you are correct about the method of implementation being macros. But that does not exclude them from being special forms, as from my knowledge a special form is simply
an expression that does not follow the formal rules for the
implementation of a function.

Most lisps define their special forms from a small subset of primitives
such as lambda and macros, of which these apply.

Anybody else have any input?


--
Brett M. Gilio
Free Software Foundation, Member
https://parabola.nu | https://emacs.org





reply via email to

[Prev in Thread] Current Thread [Next in Thread]