;;; Procedure: ;;; complement ;;; Purpose: ;;; Create a predicate that returns the "opposite" value of pred (define complement (lambda (pred) (lambda (val) (not (pred val))))) ;;; Procedure: ;;; remove ;;; Parameters: ;;; pred?, a predicate ;;; lst, a list ;;; Purpose: ;;; Removes all elements from lst for which pred? holds (define remove (lambda (pred? lst) (cond ((null? lst) null) ((pred? (car lst)) (remove pred? (cdr lst))) (else (cons (car lst) (remove pred? (cdr lst))))))) (define first (lambda stuff (car stuff))) (define last (lambda stuff (car (reverse stuff))))