読者です 読者をやめる 読者になる 読者になる

(wat-aro)

無職から有職者にランクアップしました

SICP 問題 2.77

scheme SICP
(put 'real-part '(complex) real-part)
(put 'imag-part '(complex) imag-part)
(put 'magnitude '(complex) magnitude)
(put 'angle '(complex) angle)


;; magnitudeはcomplex型を知らないのでerrorを返す.
;; なので表にcomplex型を追加すれば動く.


(magnitude z)
;=>
(magnitude (complex ractangular 3 . 4))
;=>
(apply-generic magnitude (complex ractangular 3 . 4))
;=>
((get 'magnitude '(complex)) (ractangular 3 . 4))
;=>
(magnitude (ractangular 3 . 4))
;=>
(apply-generic magnitude (ractangular 3 . 4))
;=>
((get 'magnitude '(ractangular)) (3 . 4))
;=>
(magnitude (3 . 4))
;=>
(sqrt (+ (square 3) (square 4)))
;=>
5