Sx

Top-level Files of tip
Login

Top-level Files of tip

Files in the top-level directory from the latest check-in


sx - symbolic expressions

Sx is a collection of libraries and frameworks to work with s-expressions.

See for more information on its project page.

Types

Sx support the following atomic, immutable types:

Sx supports nested lists. A list is delimited by parentheses: ( ... ). Within a list, all values are separated by space characters, including new line. Lists can be nested. Internally, lists are created by pairs. The first part of a pair, called "car", contains the actual value stored at the beginning of a list. The second part, called "cdr", typically links to the next pair. This allows multiple lists to share elements. A proper list is a list, where the last elements second part is the empty list. The last element of a list may be a pair, where the second part references a values except a list. Such lists are improper lists. Since the second part may reference any value, even earlier elements of a list, lists may be circular. Single pairs are denoted as (X . Y), where the car references S and the cdr references Y (Y is not a list).

All other types supported by Sx cannot be specified via the reader.

There is no special boolean value. The empty list (), the empty string "", and the undefined value are considered as a "false" value. All other values are treated as a "true" value. Most functions that return a boolean value currently return the empty list to signal a "false" value or return either the number 1 or the symbol T as a "true" value.

Vectors and lists are both sequences and share some common functions / methods. You can calculate the length of a sequence, check for a length less than a value, fetch the n-th element of a sequence, convert a sequence to a pair list, and iterate over the elements in a ordered way.