The Syntax of Symbols
In Shen an atom is either a symbol, boolean, string or number. All atoms, thus including symbols,
are self-evaluating. The empty list is not counted as an atom but is also self-evaluating. Hence there
is no quote in Kλ or Shen. Mapping into CL which does use quote is trivial. The function symbol? is the
recognisor for symbols; their BNF is as follows.
<symbol> := <alpha> <symbolchars> | <alpha>
<symbolchars> := <alpha> <symbolchars> | <digit> <symbolchars> | <alpha> | <digit>
<alpha> := a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s
| t | u | v | w | x | y | z
<alpha> := A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S
| T | U | V | W | X | Y | Z
<alpha> := = | - | * | / | + | _ | ? | $ | ! | @ | ~ | . | > | < | & | % | ' | # | `
| ; | : | ?? | ??
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
A symbol is a variable if it begins in an uppercase letter. |