Next: , Previous: , Up: expander   [Index]


15.7 Retrieving syntactic binding identifiers

Every core primitive has a name that is considered part of Vicare’s core language; such primitive name is the actual public name of the binding exported by the boot image. The name of the function display is the symbol display; the name of the record–type descriptor &condition-rtd is the symbol &condition-rtd.

Some internal operations generate a syntactic identifier bound to a core primitive and store it in the property list of the public primitive name; we can easily inspect such situation as follows:

(import (vicare)
  (prefix (vicare expander) xp::))

(getprop 'procedure? (xp::system-id-gensym))
⇒ #<syntax expr=procedure? ...>

(xp::system-id 'procedure?)
⇒ #<syntax expr=procedure? ...>

We see that the property list contains an entry with key set to the return value of system-id-gensym; notice that this key is different every time we rebuild the boot image.

Function: system-id symbol

Attempt to extract from symbol the bound identifier of which symbol is the name; if successful return the label, else return #f.

Function: system-id-gensym

Return a special gensym used internally to map core primitive names to their syntactic binding identifiers.