On Thu 08 Mar 2012 08:11, Mark H Weaver <[email protected]> writes: >> scheme@(guile-user)> ,expand (define (foo) (define bar (@ (chbouib) bar)) >> bar) >> $2 = (define foo >> (lambda () (letrec* ((bar-92 bar-92)) bar-92))) >> >> Andy > > I've attached a patch that fixes this bug. Fixing '@' was literally a > one word fix (w -> top-wrap), and the same would have been true of '@@' > if not for the way it had been extended to support R6RS library forms. > Unlike '@' which uses syntax->datum on the 'id' to strip the wrap, '@@' > kept syntax objects fully intact and only changed their module. > > I think it was a mistake to overload '@@' to do these two different > jobs, so I changed the R6RS-support syntax to (@@ @@ (mod ...) body) and > left its behavior as-is, and then made (@@ (mod ...) id) act the same > way as '@': use 'syntax->datum' on the 'id' and return top-wrap. > > I think it's okay to change the internal R6RS-support syntax in > stable-2.0, because it's undocumented and only exists as a temporary > intermediate form during macro expansion. What do you think? > > Also: since 'boot-9.go' was not automatically recompiled by changing > 'r6rs-libraries.scm', I added explicit dependencies to > module/Makefile.am. However, I'm almost wholly ignorant of automake, so > please double-check what I did there.
Looks great to me, pushed. It's strictly incompatible, but hey. Sorry for taking so long! The only thing I would note is that it seems to me that this "R6RS-support" is useful in a general sense. Just an impression though, I've never had occasion to use it outside the R6RS libs. Regards, and thanks very much, Andy -- http://wingolog.org/
