[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: defmacro with built-in gensym declaration and initialization
From: |
Basil L. Contovounesios |
Subject: |
Re: defmacro with built-in gensym declaration and initialization |
Date: |
Thu, 21 Jan 2021 21:23:59 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> Sorry, I suspect I misunderstood. What's a native arglist? Doesn't
>>> defmacro already have native support for &optional and &rest keywords?
>> Yes, and that's what I mean by native arglists - the ones possessed by
>> built-in C objects such as subroutines, lambda expressions, compiled
>> code, dynamic module functions, etc. and used by built-in C functions
>> such as funcall.
>> By contrast, cl-defmacro, other CL compatibility definitions, etc. have
>> to parse a plain Elisp arglist for CL-specific features like &aux.
>
> FWIW, `defmacro` is itself a macro, just like `cl-defmacro`, so it
> wouldn't be that terribly hard (the only problem is that it needs to be
> implemented without itself using macros, more or less).
Oh, right.
> For me it's more a question that whatever something like `&gensym` can't
> use values that are computed during the macro expansion, , so
>
> (defmacro M (ARGS &gensym FOO)
> ...)
>
> is equivalent to something like:
>
> (defmacro M (ARGS)
> (with-gensyms (FOO)
> ...))
>
> except:
> - it's a bit more concise
> - it exposes internal implementation details into the arglist, which is
> usually considered as part of the signature.
> - it doesn't cover the cases where you need `with-gensyms` deeper than
> at the toplevel of the macro's body.
>
> I find the added concision doesn't pay for the other two downsides.
Agreed,
--
Basil
- defmacro with built-in gensym declaration and initialization, akater, 2021/01/20
- Re: defmacro with built-in gensym declaration and initialization, Basil L. Contovounesios, 2021/01/20
- Re: defmacro with built-in gensym declaration and initialization, Stefan Monnier, 2021/01/20
- Re: defmacro with built-in gensym declaration and initialization, akater, 2021/01/20
- Re: defmacro with built-in gensym declaration and initialization, Basil L. Contovounesios, 2021/01/20
- Re: defmacro with built-in gensym declaration and initialization, akater, 2021/01/21
- Re: defmacro with built-in gensym declaration and initialization, Stefan Monnier, 2021/01/21
- Re: defmacro with built-in gensym declaration and initialization, Basil L. Contovounesios, 2021/01/21
- Re: defmacro with built-in gensym declaration and initialization, Stefan Monnier, 2021/01/21
- Re: defmacro with built-in gensym declaration and initialization,
Basil L. Contovounesios <=