Scheme programs and Scheme data are mainly binary trees. The external notation for both is S-expressions which may be transcribed to trees whether it is data or a program. The LISP language family, including Scheme, has this property; I know of no others. A Scheme expression (part of a program) is either a symbol or a pair. If it is a symbol then a map called the environment is consulted to find the value of (the expression which is) the symbol. If it is a pair and the left half is one of a fixed set of symbols then the expression is syntax and the format of the right side depends on which symbol. Some of these syntax symbols can be reduced to simpler forms, but several, such as the symbols lambda, if, quote, set!, begin are irreducible and have functions that are explained only in English.

When the left is not a special symbol then the pair is regarded as a list and each list member is required to be an expression which is evaluated. The first of these values must be a function to which the other values are provided as arguments.

Some functions come primordially and are available via standard symbols. Some of these are convenience but others are irreducible, such as cons, car, cdr, pair?, +.

A variation on Scheme might be had by allowing only the syntax lambda and providing no primordial functions. cons, car, cdr, pair?, + can be defined out of thin air and lambda. Church and co-workers showed how to all of this before 1940, well before the advent of computers.