; A variation that uses functional techniques to "Don't Repeat Yourself" (define (sort L) (if (null L) NIL (let ((p (car L))); let p=(car L) in the following expressions (append (sort (less_than p L)) (equal_to p L) (sort (greater_than p L)) ) ) )) (define (less_than p l) (extract (lambda (x) ( < x p) ) l )) (define (equal_to p l) (extract (lambda (x) ( = x p) ) l )) (define (greater_than p l) (extract (lambda (x) ( > x p) ) l )) (define (extract f l ) (cond ((Null L) NIL) ((apply f (list (car L) )) (cons (car L) (extract f (cdr l)))) (T (extract f (cdr l))) )) (trace SORT LESS_THAN EQUAL_TO GREATER_THAN EXTRACT)