-- Lisp.mesa
-- Last Edited May 31, 1983 10:37 pm Greg Nelson
-- Last Edited by: Gnelson, December 9, 1983 5:07 pm

Lisp: DEFINITIONS =

BEGIN

Value: TYPE = REF;

Pair: PROC [u: Value] RETURNS [BOOL];

Cons: PROC [a, b: Value] RETURNS [Value];

Car: PROC [x: Value] RETURNS [Value];

Cdr: PROC [x: Value] RETURNS [Value];

Rplaca: PROC [x: Value, y: Value];

Rplacd: PROC [x: Value, y: Value];

Cadr: PROC [x: Value] RETURNS [Value];

Caddr: PROC [x: Value] RETURNS [Value];

Cddr: PROC[x: Value] RETURNS [Value];

Reverse: PROC [l: Value] RETURNS [r: Value];

Append: PROC [x, y: Value] RETURNS [Value];

Memq: PROC[x, y: Value] RETURNS [BOOL];

Subst: PROC[target, replacee, replacer: Value] RETURNS [Value];

MapSubst: PROC[target, replaceelist, replacerlist: Value] RETURNS [Value];

Linearize: PROC[l, op: Value] RETURNS [Value];

Unlinearize: PROC[v, op: Value] RETURNS [Value];

END.