(define negate (lambda (pred?) (lambda (val) (not (pred? val))))) (define both (lambda (p1? p2?) (lambda (val) (and (p1? val) (p2? val))))) (define either (lambda (p1? p2?) (lambda (val) (or (p1? val) (p2? val))))) (define choose (lambda (t c a) (lambda (x) (if (t x) (c x) (a x))))) (define constant (lambda (c) (lambda (x) c))) (define id (lambda (x) x)) (define l-s (lambda (f l) (lambda (r) (f l r)))) (define r-s (lambda (f r) (lambda (l) (f l r)))) (define compose (lambda (f g) (lambda (x) (f (g x))))) (define filter (lambda (pred? lst) (cond ((null? lst) null) ((pred? (car lst)) (filter pred? (cdr lst))) (else (cons (car lst) (filter pred? (cdr lst))))))) (define curry2 (lambda (f) (lambda (l) (lambda (r) (f l r)))))