For Gauche 0.9.9

Next: , Previous: , Up: Core library   [Contents][Index]

6.9 Identifiers

Builtin Class: <identifier>

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.

Function: identifier? obj
Function: identifier->symbol identifier
Function: unwrap-syntax form

Next: , Previous: , Up: Core library   [Contents][Index]