title: Symbolic Expression
role: manual
tags: #manual #reference #zettelstore
syntax: zmk
back: 00001012000000 00001012920516 00001012920525 00001012920528 00001012921000 00001012931000
backward: 00001012000000 00001012920516 00001012920525 00001012920528 00001012921000 00001012931000
box-number: 1
copyright: (c) 2020-present by Detlef Stern <ds@zettelstore.de>
created: 20230403145644
forward: 00001012930500
lang: en
license: EUPL-1.2-or-later
modified: 20250627124639
published: 20250627124639
visibility: public

A symbolic expression (also called *s-expression*) is a notation of a list-based tree.
Inner nodes are lists of arbitrary length, while outer nodes are either primitive values (also called *atoms*) or the empty list.

A symbolic expression is either

* a primitive value (*atom*), or
* a list of the form *(E1 E2 … En)*, where *Ei* is itself a symbolic expression, separated by space characters.

An atom is a number, a string, or a symbol.

Symbolic expressions are used in programming languages like LISP or Scheme, where they denote both data structures and the program itself.
This allows a LISP or Scheme program to process LISP or Scheme programs.
That property is also used within Zettelstore.

Symbolic expressions are relatively easy to read, to parse, and to process.

# See also

* [Syntax](00001012930500) of symbolic expressions in the Zettelstore
* [S-expression @ Wikipedia](https://en.wikipedia.org/wiki/S-expression)