(let cadr (lambda (x) (car (cdr x))) caddr (lambda (x) (car (cddr x))) cddr (lambda (x) (cdr (cdr x))) first (lambda (x) (car x)) rest (lambda (x) (cdr x)) second (lambda (x) (cadr x)) third (lambda (x) (caddr x)) < (lambda (a b) (eq (quote <) (cmp a b))) = (lambda (a b) (eq (quote =) (cmp a b))) > (lambda (a b) (eq (quote >) (cmp a b))) equal (lambda (a b) (if (atomp a) (eq a b) (if (atomp b) (quote nil) (if (equal (car a) (car b)) (equal (cdr a) (cdr b)) (quote nil))))) ins (lambda (x L) (if (null L) (list x) (if (< x (car L)) (cons x L) (cons (car L) (ins x (cdr L)))))) isort (lambda (L) (if (null L) (quote nil) (ins (car L) (isort (cdr L))))) _ (assert (equal (quote (a b c x y z)) (isort (quote (x b a z y c))))) _ (assert (equal (quote nil) (isort (quote nil)))) (quote OK) )