2.5.1. Обобщенные арифметические операции
Упражнение 2.77

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

Хьюго Дум пытается вычислить выражение (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? На какую процедуру она диспетчирует в каждом случае?


Это упражнение еще никто не завершил. Ты будешь первым!


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

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

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

Войти