What should the following R6RS program output? #!r6rs
(import (rnrs))
(write (null? #'()))
plt-r6rs
prints #f
for this program.
The description of syntax objects in R6RS (http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-13.html) leaves me somewhat confused, but there is an example on that page that suggests that (null? #'())
should be true. See the example code after this text: “The following definition of unnamed let
uses bound-identifier=?
to detect duplicate identifiers.”
@eeide #f
is the right answer, because there are no pattern variables in ()
; see the last bullet for “The output produced by syntax is wrapped or unwrapped according to the following rules.”
@mflatt Thanks, I will read this. But a quick follow up: Are you saying that the example code that I mentioned makes sense because unique-ids?
is called on an object that /does/ contain pattern variables?
Yes
@sbelknap has joined the channel
@mflatt FWIW, Chez Scheme 9.4.1 outputs #f
for the above program—but evaluating (null? #’())
at the REPL yields #t
. This appears to be because entering #’()
at the top level yields ()
. I have to say, this is confusing.
@eeide Roughly, R6RS is a compromise between the Racket and Chez positions on #'
So, both Racket and Chez do different things in native mode from R6RS
OB Racket relevance: My questions arise from some code that I am porting from R6RS to Racket. I came across some code like this: (not (null? #'(final …)))
And it seemed that to make this work as intended in Racket, I had to do: (not (null? (syntax->list #’(final …))))
I reported a relevant patch upstream (using syntax->datum
), and this led to some discussion about whether the patch was necessary. From this discussion, I understand that my patch is not necessary for R6RS.
@leif thanks for resolving the conflict with acmsmall — does that mean that acmsmall also is installing things too high in the file hierarchy?
@fahree Yup, its a problem that only happens when two packages make that mistake.
Although I’m still getting build errors for the documentation, going to look into that in a bit.
since acmsmall itself copied lipics, does that mean that lipics is making the same mistake?
@leif: we should probably be using latex-utils where applicable instead of reinventing them at times. https://docs.racket-lang.org/utils/index.html
@fahree probably
@fahree Also, I agree.
Just haven’t had a chance to deal with it that much yet.
(Kind of behind writing prose at the moment…)
But yes, I 100% agree with you.
@leif I fixed settopmatter.
@pocmatos has joined the channel