Next: expander examples, Previous: expander system-labels, Up: expander [Index]
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.
Attempt to extract from symbol the bound identifier of which
symbol is the name; if successful return the label, else return
#f
.
Return a special gensym used internally to map core primitive names to their syntactic binding identifiers.