primitive_types.md
June 21, 2026 ยท View on GitHub
Opcode: null
Parameters
``
Description
Evaluates to the immediate null value and cannot have any parameters. Null is returned any time there would be a not-a-number result (NaN), such as dividing zero by zero or adding null to a number, or when intermixed with string operations.
Details
- Permissions required: none
- Allows concurrency: false
- Requires entity: false
- Creates new scope: false
- Creates new target scope: false
- Value newness (whether references existing node): null
Examples
Example:
.null
Output:
.null
Example:
(lambda .null )
Output:
.null
Example:
(lambda
#annotation
.null
)
Output:
#annotation
.null
Opcode: bool
Parameters
``
Description
A boolean value that may hold true and false as .true and .false respectively.
Details
- Permissions required: none
- Allows concurrency: false
- Requires entity: false
- Creates new scope: false
- Creates new target scope: false
- Value newness (whether references existing node): new
Examples
Example:
.true
Output:
.true
Example:
.false
Output:
.false
Opcode: number
Parameters
``
Description
A 64-bit floating point value. Note that .infinity and -.infinity are used to denote infinite values and not-a-number is transformed into a null value.
Details
- Permissions required: none
- Allows concurrency: false
- Requires entity: false
- Creates new scope: false
- Creates new target scope: false
- Value newness (whether references existing node): new
Examples
Example:
1
Output:
1
Example:
1.5
Output:
1.5
Example:
6.02214076e+23
Output:
6.02214076e+23
Example:
.infinity
Output:
.infinity
Example:
(-
(* 3 .infinity)
)
Output:
-.infinity
Opcode: string
Parameters
``
Description
A string. Many opcodes assume UTF-8 formatted strings, but many, such as format, can work with any bytes. Internally, the string is just a sequence of bytes, but when specifying a string to be parsed, \ is the escape character and the values that can be escaped are null character as \0, \ as \\, " as \", tab as \t, newline as \n, and carriage return as \r.
Details
- Permissions required: none
- Allows concurrency: false
- Requires entity: false
- Creates new scope: false
- Creates new target scope: false
- Value newness (whether references existing node): new
Examples
Example:
"hello"
Output:
"hello"
Example:
"\tHello\n\"Hello\""
Output:
"\tHello\n\"Hello\""
Opcode: list
Parameters
[* node1] [* node2] ... [* nodeN]
Description
Evaluates to a list with the parameters as elements. Pushes a new target scope such that (target), (current_index), and (current_value) access the list itself, the current index, and the current value. If []'s are used instead of parenthesis, the keyword list may be omitted. [] are considered identical to (list).
Details
- Permissions required: none
- Allows concurrency: true
- Requires entity: false
- Creates new scope: false
- Creates new target scope: true
- Value newness (whether references existing node): conditional
Examples
Example:
["a" 1 "b"]
Output:
["a" 1 "b"]
Opcode: unordered_list
Parameters
[* node1] [* node2] ... [* nodeN]
Description
Evaluates to the list specified by parameters as elements. Pushes a new target scope such that (target), (current_index), and (current_value) access the unordered list itself, the current index, and the current value. It operates like a list, except any operations that would normally consider a list's order. For example, union, intersect, and mix, will consider the values unordered.
Details
- Permissions required: none
- Allows concurrency: true
- Requires entity: false
- Creates new scope: false
- Creates new target scope: true
- Value newness (whether references existing node): conditional
Examples
Example:
(unordered_list 4 4 5)
Output:
(unordered_list 4 4 5)
Example:
(unordered_list
(unordered_list 4 4 5)
(unordered_list 4 5 6)
)
Output:
(unordered_list
(unordered_list 4 4 5)
(unordered_list 4 5 6)
)
Example:
(=
(unordered_list 4 4 5)
(unordered_list 4 4 5)
)
Output:
.true
Example:
(=
(unordered_list 4 4 5)
(unordered_list 4 4 6)
)
Output:
.false
Example:
(=
(unordered_list 4 4 5)
(unordered_list 4 4 5)
)
Output:
.true
Example:
(=
(set_type
(range 0 100)
"unordered_list"
)
(set_type
(reverse
(range 0 100)
)
"unordered_list"
)
)
Output:
.true
Opcode: assoc
Parameters
[bstring index1] [* value1] [bstring index1] [* value2] ...
Description
Evaluates to an associative list, where each pair of parameters (e.g., index1 and value1) comprises a index-value pair. Pushes a new target scope such that (target), (current_index), and (current_value) access the assoc, the current index, and the current value. If any of the bareword strings (bstrings) do not have reserved characters or whitespace, then quotes are optional; if whitespace or reserved characters are present, then quotes are required. If {}'s are used instead of parenthesis, the keyword assoc may be omitted. {} are considered identical to (assoc)
Details
- Permissions required: none
- Allows concurrency: true
- Requires entity: false
- Creates new scope: false
- Creates new target scope: true
- Value newness (whether references existing node): conditional
Examples
Example:
(unparse
{b 2 c 3}
)
Output:
"{b 2 c 3}"
Example:
(unparse
{.null 0 (+ 1 2) 3}
)
Output:
"{.null 0 (+ 1 2) 3}"