Note: This is subject to future work. Errors, ambiguities, and omissions are to be expected.
S-expressions are the closest TAS family to TAO. Both TAO and S-expressions in some way follow the principles of minimalism.
The major good quality of S-expressions is simplicity. It is probably the simplest TAS in wide use. It is difficult to imagine a simpler syntax.
In overcoming this difficulty, TAO arises.
Both S-expressions and TAO make explicit the fact that all syntax comes down to various forms of trees. This helps in making leaps of connection and analogy between seemingly disparate structures and promotes further unification and simplification.
On the other hand S-expressions are sometimes described as difficult to read, unusual or confusing, for reasons that are related to their extreme simplcity. TAO is even simpler, yet it differs in some key areas that may be the root of the problem. These are subject to future discussion.
The following S-expression1:
(defun factorial (x)
(if (zerop x)
1
(* x (factorial (- x 1)))))
may be trivially translated into TAO as:
[defun factorial [x]
[if [zerop x]
1
[* x [factorial [- x 1]]]]]
or, to tokenize on the level of TAO’s grammar:
[defun` factorial [x]
[if [zerop` x]
1
[*` x [factorial [-` x` 1]]]]]
which could technically be shortened:
[defun`factorial [x]
[if [zerop`x]
1
[*`x [factorial [-`x`1]]]]]
or, with semantic differences:
defun [factorial [x]
if [zerop [x]
1
* [x factorial [-[x 1]]]
]
]
or other ways and variations.
Example from Wikipedia.↩︎