[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: semantics



> This may seem like nitpicking, but the description in 3.6 does not
> allow one to decide if the following should evaluate to 'yes or 'no.
>
> (let-syntax ((test
>                (syntax-rules ()
>                  ((_ x)
>                   (let-syntax ((g (syntax-rules (x)
>                                     ((_ literal) 'yes)
>                                     ((_ other)   'no))))
>                     (g other))))))
>    (test literal))
>
> I guess an identifier in a pattern is a literal only if it is
> bound-identifier=? to one of the identifiers in the literals list,
> but this is not explained.

I believe that the sentence "All other identifiers appearing within a
pattern are pattern variables." near the top of Section 3.6 covers this.

> Also, the text
>
> "A literal identifier matches an input subform if and only if the input subform 
> is an identifier and either both its occurrence in the input
> expression and its occurrence in the list of literals have the same lexical 
> binding, or the two identifiers are equal and both have no lexical binding."
>
> refers to "the same lexical binding" - is this free-identifier=?, and ditto
> for the term "equal" in the last line.

Yes.  This is covered by the third bullet point in the paragraph that
starts with "More formally".  I'm not sure where the word "equal" came
from.  It should be replaced with "have the same name".

Kent