Am Sa., 26. Sept. 2020 um 23:11 Uhr schrieb Jim Rees <[email protected]>: >> >> #,> (define x 1) >> #,> (import (srfi 211 syntax-case)) >> #,> (free-identifier=? #'x (datum->syntax #'public 'x)) >> >> This last example shows that the syntactic environment of the >> *imported* identifier public is the one of the importing >> library/module. > > > I don't see that. > > Provided neither x nor public are bound as pattern variables, that last line > is always true regardless of what has or hasn't been imported or defined.
Neglecting the case that any of the identifiers is unbound, free-identifier=? compares the labels of the identifiers that are resolved by applying all the substitutions. My point is that if the identifier #'public *were* the same (including its set of substitutions) as the top-level identifier with the same name inside the test library, (datum->syntax #'public x) would carry the substitutions of the top-level environment of the library and not of interactive environment of the REPL. (Or is it already too late for me and have I just produced another brain fart?)
