Функциональный блок:
void func () {...};// в c или c ++
(defun func ...) // в clisp
fun func () = ... // в мл
Функциональный блокэто блок, который оборачивает функцию.
В Си, когда функция возвращается, записи активации функции удаляются из стека.
однако, в функциональном языке, таком как ML, CLISP, возврат функции не всегда означает удалениекадр стека.
Поскольку эту функцию можно использовать позже.
Встроенный блок - это блок, который показывает вложенную структуру.
int x = 1;
g(z) = z + x;
Когда функция g использует встроенный блок, функция g принимает переменную x как 1. функция g не знает значение x только с записью активации функции g.однако причина, по которой функция g может узнать значение x, заключается в том, что она использует статическую ссылку, а статическая ссылка указывает на ближайший блок вложенности.
Разница между функциональным блоком и встроенным блоком заключается в том, что функциональный блок не всегда удаляется из стекового кадра при возврате функции.