Язык Common LISP: Переопределить существующую функцию в объеме?

В языке Common LISP действительно ли возможно переопределить уже определенную функцию в определенном объеме? Например, учитывая функцию, который вызывает функцию B. Я могу временно переопределить B во время вызова к A?

Я ищу что-то вроде блока, которому позволяют, но это может переопределить функции.

11
задан Erik Öjebo 19 June 2010 в 07:55
поделиться

2 ответа

В рамках данной лексической области, да. Используйте FLET или LABELS. Любая функция, определенная с помощью FLET, не сможет вызывать функции, определенные в той же лексической области, если вы этого хотите (например, для саморекурсивной группы взаимно рекурсивных функций), вам нужно будет использовать LABELS.

Обратите внимание, что и FLET, и LABELS устанавливают только лексическое затенение, не должны использоваться для затенения функций из пакета COMMON-LISP и не будут динамически изменять, какая функция вызывается из-за пределов лексической области, установленной формой.

12
ответ дан 3 December 2019 в 03:17
поделиться

Локальные функции могут быть введены с помощью FLET и LABELS .

7
ответ дан 3 December 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: