> And 2nd question -- w.r.t. to free-identifier=?, what's the name of an alias to an unbound identifier? It's own name, or the name of the original source id?
The name of an identifier is a property of the identifier, not of its
binding. In particular, syntax->datum won't return the name of the
other identifier.
> ;; pre-conditions: x and y are not bound
>
> (define (is-x? id) (free-identifier=? id #'x))
>
> (let ()
> (alias x y)
> (is-x? x))
This should return `#f' (after adding (syntax ...) as you wrote in
your next email).
These answers seem to conflict with each other.
(syntax->datum #'x) is always x - good that tells me that there's no special object class for the result of an alias form -- it's just an identifier, possibly bound, possibly not, and now the new feature is that it can be "bound" to be un-bound -- and if so, it should have the same behavior as the same-named identifier that was never bound in the first place -- (or is this my confusion? is an un-binding distinct from a never-binding?)
Why would is-x? return #f? The outer x and the inner x are both un-bound, and both have the same name x.