Next: scheme lex syntax booleans, Previous: scheme lex syntax whitespace and comments, Up: scheme lex syntax [Index]
Most identifiers allowed by other programming languages are also
acceptable to Scheme. In general, a sequence of letters, digits, and
“extended alphabetic characters” is an identifier when it begins with
a character that cannot begin a representation of a number object. In
addition, +
, -
, and ...
are identifiers, as is a
sequence of letters, digits, and extended alphabetic characters that
begins with the two–character sequence ->
. Here are some
examples of identifiers:
lambda q soup list->vector + V17a <= a34kTMNs ->- the-word-recursion-has-many-meanings
Extended alphabetic characters may be used within identifiers as if they were letters. The following are extended alphabetic characters:
! $ % & * + - . / : < = > ? @ ^ _ ~
Moreover, all characters whose Unicode scalar values are greater than
127 and whose Unicode category is Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd,
Nl, No, Pd, Pc, Po, Sc, Sm, Sk, So, or Co can be used within
identifiers. In addition, any character can be used within an
identifier when specified via an ?inline-hex-escape. For example,
the identifier H\x65;llo
is the same as the identifier
Hello
.
Any identifier may be used as a variable or as a syntactic keyword (scheme basic variables keywords regions and scheme syntax macros) in a Scheme program. Any identifier may also be used as a syntactic datum, in which case it represents a symbol (baselib symbols).