Определение 16.53. Команды undefgeneric и undefraethod

(undefgeneric <имя-родовой-функции>)

(undefmethod <имя-родовой-функции> <индекс-метода>)

В качестве параметра <имя-родовой-функции> команды undefgeneric возмож­но указание символа *. В этом случае команда попытается удалить все оп­ределенные пользователем родовые функции и их методы. Удаление родо­вой функции закончится неудачей, если выбранная функция в данный мо­мент используется или выполняется (например, правилом).

Параметр <имя-метода> команды undefmethod определяет имя конкретного метода для удаления. Если в качестве данного параметра задан символ *, то команда undefmethod удалит все методы выбранной родовой функции. Отли­чие данной команды от команды undefgeneric состоит в том, что даже при удалении всех методов некоторой функции команда оставляет ее заголовок. В случае если вместо имени конкретной родовой функции использовался символ * (значение параметра <имя-метода> в такой ситуации также должно равняться *), будут удалены все методы всех определенных пользователем родовых функций. Заголовки всех функций при этом останутся в системе.

Команда preview-defgeneric чрезвычайно полезна при отладке родовых функций. Она отображает список всех методов выбранной родовой функ­ции, применимых к заданному набору аргументов, в отличие от команды list-defmethod, которая отображает список всех методов выбранной родовой функции. Выполнение данной команды фактически не выполняет методы родовой функции, однако производит проверку соответствия заданных аргументов, вычисление и проверку заданных ограничений, а также выпол­няет родовое связывание, что может вызывать различные побочные эф­фекты.

Определение 16.54. Команда preview-generic

(preview-generic <имя-родовой-функции> <выражение>*)

Параметр <выражение> в данном определении задает аргумент родовой функции. В качестве примера можно использовать следующие действия (см. также рис. 16.3).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: