(define zero (lambda (f) (lambda (x) x))) (define one (lambda (f) (lambda (x) (f x)))) (define two (lambda (f) (lambda (x) (f (f x))))) (define add (lambda (n) (lambda (m) (lambda (f) (lambda (x) ((n f) ((m f) x))))))) (define mul (lambda (n) (lambda (m) (lambda (f) (n (m f)))))) (define is-zero (lambda (n) (n (lambda (x) #f) #t))) (define eq (lambda (n) (lambda (m) (is-zero (sub n m))))) (define zero (lambda (f) (lambda (x) x))) (define one (lambda (f) (lambda (x) (f x)))) (define two (lambda (f) (lambda (x) (f (f x))))) (define add (lambda (n) (lambda (m) (lambda (f) (lambda (x) ((n f) ((m f) x))))))) (define mul (lambda (n) (lambda (m) (lambda (f) (n (m f)))))) (define is-zero (lambda (n) (n (lambda (x) #f) #t))) (define neg (lambda (n) (lambda (f) (lambda (x) ((n (lambda (g) (lambda (h) (h (g f))))) (lambda (u) x) (lambda (u) u)))))) (define -1 (neg one)) (define -2 (neg two)) (define fact (lambda (n) (if (is-zero n) one (* n (fact (sub n one)))))) (define make-complex (lambda (real imag) (lambda (selector) (selector real imag)))) (define real-part (lambda (z) (z (lambda (real imag) real)))) (define imag-part (lambda (z) (z (lambda (real imag) imag)))) (define add-complex (lambda (z1) (lambda (z2) (make-complex (+ (real-part z1) (real-part z2)) (+ (imag-part z1) (imag-part z2)))))) (define mul-complex (lambda (z1) (lambda (z2) (make-complex (- (* (real-part z1) (real-part z2)) (* (imag-part z1) (imag-part z2))) (+ (* (real-part z1) (imag-part z2)) (* (imag-part z1) (real-part z2))))))) (define make-decimal (lambda (numerator denominator) (lambda (selector) (selector numerator denominator)))) (define numerator (lambda (d) (d (lambda (numerator denominator) numerator)))) (define denominator (lambda (d) (d (lambda (numerator denominator) denominator)))) (define add-decimal (lambda (d1) (lambda (d2) (make-decimal (+ (* (numerator d1) (denominator d2)) (* (numerator d2) (denominator d1))) (* (denominator d1) (denominator d2)))))) (define mul-decimal (lambda (d1) (lambda (d2) (make-decimal (* (numerator d1) (numerator d2)) (* (denominator d1) (denominator d2))))))