> On 28/06/2023 14:09, felix.winkelm...@bevuta.com wrote: > >> > >> (define-object-type bar > >> (field-1 name-of-library#foo) > >> (field-2 name-of-other-library#some-other-type)) > >> > >> ...even though calling symbol-value on those symbols at run time works > >> just fine. It seems that the symbols imported into the environment at > >> macro expansion time are handled differently in some way. > >> > > > > I guess during expansion identifiers are renamed to some internal gensym > > and thus not accessible by name (which is the whole point of a hygienic > > macro system). Could you not register the "foo" type in a expansion time > > hash table? > > Alas, the requirement is that things like "foo" are part of the lexical > environment - so can be imported from modules, renamed, be hidden inside > local scopes, all that stuff! >
I guess some macro wizard will come up with a way to do this. But I still think that keeping an expansion/compile-time registry and accessing it using procedure macros (via "strip-syntax"ed identifiers to drop all renaming artifacts) is a possible solution. felix