[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#68413: Ungexp doesn't work on deep lists
From: |
Josselin Poiret |
Subject: |
bug#68413: Ungexp doesn't work on deep lists |
Date: |
Sat, 13 Jan 2024 12:38:38 +0100 |
Hi Justin,
Justin Veilleux <terramorpha@cock.li> writes:
>> (define packages
>> (list
>> (cons "coreutils" coreutils)
>> (cons "make" gnu-make)
>> ...))
>>
>> #~(for-each
>> (lambda (f)
>> ... do-something)
>> '#$packages)
>
> If I send a patch to "fix" this, will it be usefull or is there a reason
> for this behavior?
I think IMO that it's a bug, but it's also quite tricky to properly
traverse deep structures like this. The bug comes from the fact that in
gexp->sexp, we traverse lists by matching the reference with (refs ...),
but that doesn't match if the reference is a pair instead. Then, it
tries to match with ($ <gexp-input> (? self-quoting? x)), which does
match since self-quoting? apparently returns #t on a pair, whether or
not its constituents are also self-quoting.
Best,
--
Josselin Poiret
signature.asc
Description: PGP signature