An identifier is an internal object to keep track of binding of variables by the compiler.
Usually it is hidden from Scheme world, but the hygienic macro expander inserts identifiers into its output, which is necessary for hygiene. But that makes reading macro expansion result difficult.
If you bothered by all the
#<identifier ...> stuff in
the macro output, remember a handy trick
to pass the expansion result to
unwrap-syntax; it converts
all identifiers in the passed form to bare symbols. It does lose
information—two different identifiers may be converted to a symbol
with the same name—so you need some care to interpret the output,
but usually the output gives a fairly good idea of what the macro is doing.
Currently, identifiers are disjoint from symbols. That might cause problems if you tweak macro output. The plan is to make identifiers just a special kind of symbols eventually, so do not assume too much about identifiers.