[plt-scheme] syntax-object comparison
At Fri, 7 May 2004 15:25:41 -0400, Doug Orleans wrote:
> Thanks, that does give me some clues. I'm still trying to wrap my
> head around the reasons for the differences, and which ones I need to
> use in which situations, but I think I'm starting to figure it out.
>
> It appears that `bound-identifier=?' implies `free-identifier=?'
> implies `module-identifier=?'.
Yes.
(I don't think that `free-identifier=?' is ever useful. It exists only
for a kind of compatibility with the original `syntax-case'
implementation. But there are so many other incompatibilities that it's
probably not worthwhile.)
> The hierarchy seems to be:
>
> `free-identifier=?' is like `bound-identifier=?' except it also
> works for variables that have no binding. (or are bound at the top
> level?)
No, it's about macro-introductions and future potential bindings, not
existing bindings.
Unlike `bound-identifier=?', `free-identifier=?' doesn't detect that
one identifier might not capture the other because it was introduced by
a macro expansion.
> `module-identifier=?' is like `free-identifier=?' except it also
> knows about module renaming.
Yes.
Matthew