[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: macro-replacement with quotes
From: |
Phillip Lord |
Subject: |
Re: macro-replacement with quotes |
Date: |
Mon, 25 Jan 2016 10:17:26 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Marcin Borkowski <mbork@mbork.pl> writes:
> On 2016-01-24, at 22:56, Phillip Lord <phillip.lord@russet.org.uk> wrote:
>
>> Is it possible to build a list within a macro which contains backquote,
>> quote or comma symbols in it?
>>
>> Specifically, I was thinking of building a macro which expands to a
>> pcase form, but I need the ` symbol in the expansion.
>
> I'm not sure whether this would help (I know next to nothing about
> pcase), but would \` and \, suffice for you?
>
> If I do M-: (read) and type `(a ,b), I get (\` (a (\, b))), which seems
> to be equivalent to `(a ,b) in terms of `eval'. Dunno about pcase,
> though.
>
>> Phil
>
> Best,
Hmm, yes, you are right. I didn't realise that (\` x) was equivalent to
`x, but this works...
(pcase 10
((\` (\, a)) a))
And this...
(defun quote-and-comma-arg (def)
(list '\` (list (list '\, (car def)))))
(defmacro p-test (def)
`(pcase 10
(,(quote-and-comma-arg def)
,(car def))))
(p-test (a))
expands to
(pcase 10
(`(,a)
a))
which returns "10".
The joy of lisp!