Селекторы комплексных чисел

Хьюго Дум пытается вычислить выражение (magnitude z) , где z — объект, показанный на рис. 2.24. К своему удивлению, вместо ответа 5 он получает сообщение об ошибке от apply-generic , гласящее, что у операции magnitude нет методов для типа (complex) . Он показывает результат Лизе П. Хакер. Та заявляет: ''Дело в том, что селекторы комплексных чисел для чисел с меткой complex определены не были, а были только для чисел с меткой polar и rectangular . Все, что требуется, чтобы заставить это работать — это добавить к пакету complex следующее:''

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

Подробно опишите, почему это работает. В качестве примера, проследите все процедуры, которые вызываются при вычислении (magnitude z) , где z — объект, показанный на рис. 2.24. В частности, сколько раз вызывается apply-generic ? На какую процедуру она диспетчирует в каждом случае?

2.77

Рис. 2.24. Представление 3 + 4i в декартовой форме


Комментарии отсутствуют.

Необходима авторизация

Вы должны авторизоваться для создания комментария.

Вход