The interpreter understands UTF-8 source files using the following syntax:
; Single-line comments start with a semicolon #! Multi-line comments start with hash-bang and end with bang-hash !#
All non-comment values should be separated by whitespace.
Integers start with a base-10 digit:
0 1 23 456 78900000
Floating-point numbers start with a base-10 digit and contain a single .:
0.12 3.4 5. 6.789
[Lists are delimited by square brackets]  ; an empty list
"Strings are double-quoted" "They may contain an escaped (\n) or embedded newline character" "Double-quote characters may be \"escaped\" too"
Symbols are "anything else": a symbol starts with anything except numbers, [, ], " or comments, and continues until the first [, ], ", ; or whitespace character.
Additionally, ' and : are read as independent symbols if they appear
as the first character of a symbol.
For example, 'foo and :bar are read identically to ' foo and : bar respectively.
Finally, # as the start of a symbol
pairs itself with the next character
(if it is not whitespace or !)
to form an independent symbol.
For example, #056, #[foo, and #xbar are read identically to #0 56, #[ foo, and #x bar respectively.
You can use these convenience rules to approximate custom literal values, e.g. characters, keywords, hashtables, etc.