This page is part of the web mail archives of SRFI 93 from before July 7th, 2015. The new archives for SRFI 93 contain all messages, not just those from before July 7th, 2015.
On Jun 26, 2006, at 10:37 AM, dyb@xxxxxxxxxxxxxx wrote:
* In section 3.6, the paragraph describing ellipses says, "otherwise,the expander would not be able to determine how many times the subformshould 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.
Both k and e2 are directly followed by an ellipsis, and the patterncontaining 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 e2are each directly followed by an ellipsis in the template, and thetemplate containing both is also followed by an ellipsis, the one you'vemarked. If you think about each ellipsis as a mapping operation, themarked 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 thelist 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, sothat the expander never passes a set! expression to the transformer whenthat form of identifier-syntax is used.
Ah, I see. Now it even seems obvious. Thanks.