I remember one of the arguments for exporting auxiliary keywords was so that they could be renamed. This is usually demonstrated when you change "else" to be a translation in another language. I'm not sure how strong that argument is, but I have come across this in a real situation: the pmatch pattern matcher uses the underscore as a wildcard, but underscore is no longer a valid literal in R6RS. So I replace _ with ? in the pmatch library, then do (import (except (rnrs) _) (rename (pmatch) (? _))) in the script using pmatch so I can continue to use underscore.
Of course, I am left with these questions: "Why does R6RS ban _?" and "Why is there an else keyword at all, what about using #t?" On Wed, May 27, 2009 at 6:07 PM, Abdulaziz Ghuloum <[email protected]> wrote: > > On May 27, 2009, at 7:18 AM, Derick Eddington wrote: > >> I don't like R6RS's auxiliary keywords because it doesn't seem right to >> export keywords which are local to the mini-language of particular >> macros. > > I don't disagree with your points BTW. I was just explaining the > current situation (the bug in ikarus, and a possible workaround). > > I also don't know the motivation for why auxiliary keywords are > made bound in R6RS instead of being unbound like in R5RS. I'm > not sure "protecting the user" was the motivation but I would > not be surprised if it was. (The first time I heard it was from > Matthew in private conversation, and it was a side issue, so, > I didn't ask.) > > I personally think that auxiliary keywords should be compared > with symbolic-identifier=?. So, cond for example should recognize > the [else ---] last clause as one starting with the 4-letter > symbol spelled e-l-s-e rather than the identifier else exported > from (rnrs) or whatever. > > Anyways, the bug has to be fixed lest people take my position on > the issue as a cover up story. > > Aziz,,, >
