История изменений
Исправление
dave,
(текущая версия)
:
Скорее всего, да. Вероятно, она «вклинивается», но с некоторыми оговорками, что в вызывающей функции не происходит кеширования, что адрес старой функции не сохраняется и тому подобного.
Это можно проверить экспериментально. Сейчас написал простенький пример:
(defun f () (break) (g))
(defun g () 1)
Я запускаю f. В ответ по break вываливаются рестарты. В это время я меняю g:
(defun g () 2)
Затем продолжаю выполнение прерванной функции f. В итоге получаю ответ 2. То есть, во время выполнения функции f я переопределил функцию g, и была задействована новая версия g.
Исходная версия
dave,
:
Скорее всего, да. Вероятно, она «вклинивается», но с некоторыми оговорками, что в вызывающей функции не происходит кеширования, что адрес старой функции не сохраняется и тому подобного.
Это можно проверить экспериментально. Сейчас написал простенький пример:
(defun f () (break) (g))
(defun g () 1)
Я запускаю f. В ответ по break выливаются рестарты. В это время я меняю g:
(defun g () 2)
Затем продолжаю выполнение прерванной функции f. В итоге получаю ответ 2. То есть, во время выполнения функции f я переопределил функцию g, и была задействована новая версия g.