comments on and questions about SRFI 93 Arthur A. Gleckler (25 Jun 2006 21:01 UTC)
Re: comments on and questions about SRFI 93 dyb@xxxxxx (26 Jun 2006 17:37 UTC)
Re: comments on and questions about SRFI 93 Arthur A. Gleckler (28 Jun 2006 05:07 UTC)

Re: comments on and questions about SRFI 93 Arthur A. Gleckler 28 Jun 2006 05:07 UTC

On Jun 26, 2006, at 10:37 AM, xxxxxx@cs.indiana.edu wrote:

>> * In section 3.6, the paragraph describing ellipses says, "otherwise,
>> the expander would not be able to determine how many times the
>> subform
>> should be repeated in the output."  I've never understood precisely
>> how Scheme macro systems decide how many expansions to do for a
>> particular use of ellipses in the output template.  I can usually
>> intuit what will happen, but I've never had a concrete understanding
>> of the algorithm.  Would it be possible to expand on the algorithm
>> here to make it absolutely clear?
>
> Probably.  I've made a note to try to do this at some point.

Thanks.

> Both k and e2 are directly followed by an ellipsis, and the pattern
> containing the two of them is also followed by an ellipsis.  So
> both must
> be followed by at least two ellipses in the output.  They are.  k
> and e2
> are each directly followed by an ellipsis in the template, and the
> template containing both is also followed by an ellipsis, the one
> you've
> marked.  If you think about each ellipsis as a mapping operation, the
> marked ellipsis maps a procedure that constructs one cond clause
> over a
> list of a list of k's, a list of e1's and a list of a list of
> e2's.  The
> ellipsis following k in the template maps the identity function
> over the
> list of k's---in other words, it simply returns the list of k's.

Ah, it's clear now.  I'll read the implementation to be sure I
understand perfectly, but I now see the algorithm.  Thanks.

>> * In section 3.10, a definition is given for `identifier-syntax', but
>> the first clause appears to be missing a call to
>> `make-variable-transformer', which I've added here:

> Actually, the call to make-variable-transformer should not appear, so
> that the expander never passes a set! expression to the transformer
> when
> that form of identifier-syntax is used.

Ah, I see.  Now it even seems obvious.  Thanks.