(undefgeneric <имя-родовой-функции>)
(undefmethod <имя-родовой-функции> <индекс-метода>)
В качестве параметра <имя-родовой-функции> команды undefgeneric возможно указание символа *. В этом случае команда попытается удалить все определенные пользователем родовые функции и их методы. Удаление родовой функции закончится неудачей, если выбранная функция в данный момент используется или выполняется (например, правилом).
Параметр <имя-метода> команды undefmethod определяет имя конкретного метода для удаления. Если в качестве данного параметра задан символ *, то команда undefmethod удалит все методы выбранной родовой функции. Отличие данной команды от команды undefgeneric состоит в том, что даже при удалении всех методов некоторой функции команда оставляет ее заголовок. В случае если вместо имени конкретной родовой функции использовался символ * (значение параметра <имя-метода> в такой ситуации также должно равняться *), будут удалены все методы всех определенных пользователем родовых функций. Заголовки всех функций при этом останутся в системе.
|
|
Команда preview-defgeneric чрезвычайно полезна при отладке родовых функций. Она отображает список всех методов выбранной родовой функции, применимых к заданному набору аргументов, в отличие от команды list-defmethod, которая отображает список всех методов выбранной родовой функции. Выполнение данной команды фактически не выполняет методы родовой функции, однако производит проверку соответствия заданных аргументов, вычисление и проверку заданных ограничений, а также выполняет родовое связывание, что может вызывать различные побочные эффекты.
Определение 16.54. Команда preview-generic
(preview-generic <имя-родовой-функции> <выражение>*)
Параметр <выражение> в данном определении задает аргумент родовой функции. В качестве примера можно использовать следующие действия (см. также рис. 16.3).