Не секрет, что в Си функции не могут быть вложенными.
И пусть меня забросают тухлыми помидорами, но я готов подписаться под этим правилом.
Вот моё обоснование. Процедуры, которые имеют вложенные (локальные) процедуры конкурируют с модулем. А значит в них нет острой необходимости. Ведь модули и так уже есть! А как насчёт ортогональности?

Возьмём, к примеру, классы. Казалось бы ну очень мощная концепция. Ан-нет!  Уступили место расширяемым (EXTENSIBLE) записям и связанным процедурам. Не выдержали конкуренции с модулем.

Вложенность процедур, конечно, очень удобно реализовать в компиляторе используя стек. Ну и что? Разве язык создаётся ради компилятора?

Червячок сомнения всё-таки гложет. Хотелось бы услышать мнение других специалистов.