Hi Alex!
> Note SRFI-72 is not an implementation of syntactic-closures.
> It's an alternate hygiene algorithm closer to the R6RS one which
> includes a compatible syntax-case and some convenience utilities.
To comments to this:
1. The main reason for SRFI-72 is to e.g. capture the let bound y in
the syntax in
(define y 1)
(define (f x) x)
(let-syntax ((g (lambda (x) #`(let ((y 2)) #,(f #'y))))) g)
-> 2
And the same with #,@. In SRFI-72 they design a whole new hygiene
method etc. for that. What I tried to do was to get this result as well at
good approximation within the current syntax system.
2. I was actually hesistant to call this srfi-72 because of trying to
do what it want
more than what it say's. A main trick to simulate the effect was to introduce
a closure in the syntax at one point and therefore a choose the name
syntax-closure not knowing that there is an already a notion of
that in the wild
sorry!
> Syntactic-closures never had a formal specification, just
> an informal description and reference implementation, so
> it's not clear to me if SRFI-72's make-capturing-identifier is
> equivalent to the synclos free variables.
yeah I could be out of the blue saying srfi-72. Maybe the algorithm
needs a srfi
of it's own because it does useful stuff and integrates well with
standard syntax-case
systems which srfi-72 don't. And of cause the mentioning of synclos could be
confusing.
/Stefan