Adscript Data Notation is a modified version of EDN. This spec is currently very sparse, but still usable.
Type | Parser Implementation (C++) | Example |
---|---|---|
id |
std::u32string |
f |
char |
char32_t |
\A |
int |
int64_t (TODO: bigint) |
42 |
float |
double |
13.37 |
str |
std::u32string |
"hi" |
list |
std::vector<Element> |
(f 1) |
vec |
std::vector<Element> |
["hi" 2] |
map |
std::vector<std::pair<Element, Element>> |
{0 "hi" "bye" 2} |
In programming languages from the LISP family, it has been practice for a long
time to use a '
to distinguish between calling a function and creating a list.
Additionally, languages like Clojure use #
to distinguish between certain data
types. These behaviors are supported by adn, as '
and #
are distinct Lexer
Tokens and added to the next Parser Element. Additionally, we support backticks
(`
) in the same way, as many LISPs also use those. We currently don't have
a specific unquote character, using ,
would go against treating it as
whitespace, Clojure for example uses ~
instead. If you need unquoting in your
adn
-based LISP, use an unquote
function and maybe consider hashed ids
unquoted. If you are really invested in making adn
unquotes happen, feel free
to open a GitHub issue.