[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Distinguishing `consp` and `functionp`
From: |
Stefan Monnier |
Subject: |
Re: Distinguishing `consp` and `functionp` |
Date: |
Sun, 28 Jan 2024 16:27:27 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
> Maybe I'm missing something, but I always thought that having code and
> data indistinguishable is one of the strong sides of Lisp. Are we now
> going to make this advantage smaller, by deprecating the use of lists
> to represent functions?
A function *value* contains code in some representation that depends on
lots of factors. In practice most function values in most Lisp
implementations are not just plain lists but are somewhat opaque data.
This is also the case in ELisp where most function values are actually
compiled either as bytecode or as native code: we do have tools to look
inside, but they're definitely not plain old lists.
The "code and data indistinguishable" is something that usually refers
to various things:
- the source code (which gives us powerful macros).
- the availability of `read`able print representations of functions (tho
that doesn't apply to native-compiled functions, sadly).
- the ability to embed any value (including a function) into source code
via `quote`.
Those three are mostly independent from each other (and are not affected
by my patch). And if you ask other people, they may give you different
answers.
But looking inside a function *value* (i.e. what is returned at run time
by the evaluation of `#'(lambda ...)`) with `car/cdr` is rarely
supported in the Lisp world.
Stefan
- Re: Distinguishing `consp` and `functionp`, (continued)
- Re: Distinguishing `consp` and `functionp`, Eli Zaretskii, 2024/01/26
- Re: Distinguishing `consp` and `functionp`, João Távora, 2024/01/26
- Re: Distinguishing `consp` and `functionp`, Stefan Monnier, 2024/01/26
- Re: Distinguishing `consp` and `functionp`, João Távora, 2024/01/26
- Re: Distinguishing `consp` and `functionp`, Stefan Monnier, 2024/01/26
- Re: Distinguishing `consp` and `functionp`, Daniel Mendler, 2024/01/26
- Re: Distinguishing `consp` and `functionp`, João Távora, 2024/01/27
- Re: Distinguishing `consp` and `functionp`, Po Lu, 2024/01/27
- Re: Distinguishing `consp` and `functionp`, João Távora, 2024/01/27
- Re: Distinguishing `consp` and `functionp`, Richard Stallman, 2024/01/27
Re: Distinguishing `consp` and `functionp`,
Stefan Monnier <=
- Re: Distinguishing `consp` and `functionp`, Eli Zaretskii, 2024/01/29
- Re: Distinguishing `consp` and `functionp`, Stefan Monnier, 2024/01/29
- Re: Distinguishing `consp` and `functionp`, Eli Zaretskii, 2024/01/29
- Re: Distinguishing `consp` and `functionp`, Stefan Monnier, 2024/01/29
- Re: Distinguishing `consp` and `functionp`, Eli Zaretskii, 2024/01/29
- Re: Distinguishing `consp` and `functionp`, Stefan Monnier, 2024/01/29
Re: Distinguishing `consp` and `functionp`, João Távora, 2024/01/29
Re: Distinguishing `consp` and `functionp`, Eli Zaretskii, 2024/01/29
Re: Distinguishing `consp` and `functionp`, João Távora, 2024/01/29
Re: Distinguishing `consp` and `functionp`, Eli Zaretskii, 2024/01/29