В языке Common LISP действительно ли возможно переопределить уже определенную функцию в определенном объеме? Например, учитывая функцию, который вызывает функцию B. Я могу временно переопределить B во время вызова к A?
Я ищу что-то вроде блока, которому позволяют, но это может переопределить функции.
В рамках данной лексической области, да. Используйте FLET или LABELS. Любая функция, определенная с помощью FLET, не сможет вызывать функции, определенные в той же лексической области, если вы этого хотите (например, для саморекурсивной группы взаимно рекурсивных функций), вам нужно будет использовать LABELS.
Обратите внимание, что и FLET, и LABELS устанавливают только лексическое затенение, не должны использоваться для затенения функций из пакета COMMON-LISP и не будут динамически изменять, какая функция вызывается из-за пределов лексической области, установленной формой.
Локальные функции могут быть введены с помощью FLET и LABELS .