I attempt here to describe enough of the computer programming language “Scheme” to understand and perhaps modify the Cayley-Dickson construction of the hypercomplex numbers, and a similar development of Clifford algebras. For a modern and somewhat esoteric language Scheme has a remarkably short and accessible definition. If you know a little LISP, Scheme should be duck soup.
Parentheses are matched, as in most programming languages. Scheme loves parentheses. If you want to change the programs it would be good to find a parenthesis savvy editor.
A function that might be written f(x, y) in conventional contexts is written (f x y) in Scheme. Scheme is unusual in that functions are computed as values rather than statically defined, as in most computer languages.
(+ 4 5) yields 9; there are no infix operators in Scheme.
Scheme loves functions—as early computer languages used expressions mainly to denote functions, Scheme expressions are likely to denote functions. Functions take functions as arguments and return functions. Of course Scheme does numbers too.
(lambda (x) (+ x 3)) yields the function that returns three more than its argument. ((lambda (x) (+ x 3)) 4) yields 7. Alonzo Church invented the lambda calculus about 1920 and would have written the above function “λx.x+3”
As in LISP, Scheme packs two values into one called a “pair”. (cons (+ 3 2) (- 7 4)) yields (5 . 3). You can pull out the pieces with the functions “car” and “cdr”. (car (cons 7 3)) yields 7 and (cdr (cons 7 3)) yields 3.
A list of 4 things, w, x, y, z is conventionally represented in Scheme as (w . (x . (y . (z . '())))). “'()” denotes the empty list or the list with zero entries. The above list can be written (w x y z) and means the same thing—it is the preferred form.
(define x 4) introduces a new variable x whose initial value is 4. (define (G f) ....) causes G to be defined as a new function. It is equivalent to (define G (lambda (f) ....)).
(apply fun lst) expects fun to be a function of as many arguments as there are members of the list lst. It calls fun with those arguments.
Note that “+”, “−” and “*” are parameters that take on values passed to G that are functions of two arguments. In this respect the Scheme notation of more faithful to the ideas of the Cayley-Dickson construction than is possible in other computer languages.