SICP Exercise 2.77: expected a procedure that can be applied to arguments, given #f
2023-07-13
2.5.1 Generic Arithmetic Operations
Louis Reasoner tries to evaluate the expression (magnitude z) where z is the object shown in figure 2.24. To his surprise, instead of the answer 5 he gets an error message from
apply-generic
, saying there is no method for the operationmagnitude
on the types(complex)
.
To simplify the install-complex-package
procedure, I made the following changes:
1(define (install-complex-package) 2 (define (make-from-real-imag x y) 3 ((get 'make-from-real-imag 'rectangular) x y)) 4 (define (tag z) (attach-tag 'complex z)) 5 (put 'make-from-real-imag 'complex 6 (lambda (x y) (tag (make-from-real-imag x y)))) 7 8(install-complex-package) 9 10(trace-define (make-complex-from-real-imag x y) 11 ((get 'make-from-real-imag 'complex) x y)) 12 13(magnitude (make-complex-from-real-imag 3 4))