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,,,
>

Reply via email to