а он мне раз и заявил: "Нельзя, мол, ссылаться на локальную процедуру"!
Компилятор от akron1 с ним солидарен...
Совершенно правильное ограничение.... дабы отсекать сами попытки ваять такую замудрённую и двусмысленную чушь, как протаскивание контекстов процедур и т.п.
В том же JS "эти ваши замыкания" используются направо и налево от отсутствия модульности и удобного "не-ассемблерного" ООП (как и в ФП их главная роль - быть альтернативой ООП).
Я в JS сначала поигрался с замыканиями, когда обнаружил, что для удержания этого клубка в голове и его объяснения кому-то нужны дополнительные усилия, послал их в..., кроме совсем ограниченных случаев, типа обработки событий и т.п.
Хочется таскать контекст - задекларируй явно объект для этого контекста, как тип данных, - и таскай...
Неявщину, умолчания, запутанные клубки связей - в.... топку
Ну, если в качестве эталона языка для использования замыканий брать js, то действительно, замыкания - богомерзкая дрянь :-) (впрочем, это к любой концепции относится - динамическая типизация, синтаксис, сборщик мусора, прототипное наследование - что ни рассматривай на примере js, всё дрянью покажется) А вот если брать что-то более вменяемое, ну там haskell например, то становится очевидно что это классная штука, которая делает код яснее, и не столь запутанным, как в случае ОО-языков.
И нет, у замыканий роль не в "замене" ООП. Программирование не крутится вокруг объектной методологии.
PS. А модульность вооще тут ортогональна. Замыкание контекста штука динамическая, а модуль штука статическая.
PPS. А ООП в Обероне, таки ассемблерного типа.