Я думаю, что это записано, но я хотел бы подтвердить.
С динамической областью видимости не имеет значения, используется ли вложенная функция или отдельная функция, поскольку переменные просто зависят от стека вызовов.
При использовании только чистых функций также не имеет значения, используется ли вложенная функция или отдельная функция. Это верно независимо от типа области видимости.
С лексической областью видимости вложенные функции примерно имитируют вызов функции с динамической областью видимости.
С лексической областью видимости программа, полностью написанная из чистых функций (возможно, допускающая один нечистый вывод в стандартный вывод), не нуждается в сборке мусора. Если это имеет значение, я специально думаю о GNU C с расширением вложенной функции для этого вопроса.
ПРИМЕЧАНИЕ. Под чистой функцией я подразумеваю полностью чистую функцию: единственное, что «читается», — это параметры, единственное, что «записывается», — это возвращаемые функции.
Спасибо