2.83¶
; Suppose you are designing a generic arithmetic system for dealing with the tower ; of types shown in Figure 2.25: integer, rational, real, complex. For each type ; (except complex), design a procedure that raises objects of that type one level ; in the tower. Show how to install a generic raise operation that will work for ; each type (except complex). ; Source: [https://wizardbook.wordpress.com/2010/12/08/exercise-2-83/](https://wizardbook.wordpress.com/2010/12/08/exercise-2-83/) (define (raise x) (apply-generic 'raise x)) ; Integer package (put 'raise '(integer) (lambda (n) (make-rational n 1))) ; Rational package (define (rational->real r) (make-real (/ (numer r) (denom r)))) (put 'raise '(rational) rational->real) ; Real package (define (real->complex r) (make-complex-from-real-imag r 0)) (put 'raise '(real) real->complex)