Значит это может быть достигнуто путём использования встроенного интерпретатора, но написанного библиотечным способом. Я начинаю думать, что лямбда-исчисление доступно для Оберона. Вот смотрите, возьмём для примера BlackBox Component Builder. В нём есть подсистема Dev, содержащая компилятор Компонентного Паскаля. Он вызывается с помощью команды активации компиляции из меню. Не составит никакой проблемы вызывать компилятор из своего собственного модуля. Не составит и никакой проблемы переориентировать компилятор брать входной текст (на Компонентном Паскале) не из текстового окна, а прямо из вызывающего кода. Это может выглядеть так (код условный):
Данный подход конечно пользуется компилятором и ядром, но зато - никакой интерпретации.Код:MODULE Lambda;
IMPORT Dev, Kernel;
CONST
MyCode = "MODULE MyCode; IMPORT Out; BEGIN Out.String('Hello, integrated World!') END MyCode;";
BEGIN
Dev.CompileText(MyCode);
Kernel.LoadModule("MyCode");
Kernel.RunModule("MyCode");
END Lambda.
---------- Post added at 23:42 ---------- Previous post was at 22:10 ----------
Так можно сделать лямбды если они понадобятся оберонщику. Мне пока не понадобились. Наверное я не очень продвинутый.
Просто Дельфи- или Си-программист воспринимает компилятор как нечто совершенно отчуждённое от его личного кода. В Оберон-системе компилятор - такой же компонент, как и любой другой. И точно также ему можно посылать сообщения и получать ответы. Точно так же обстоят дела и с IDE, документами, окнами и любыми другими контролами.
Именно поэтому в Оберон-системе как правило не нужен внутренний скриптинг на другом, отличном от Оберона языке. Т.е. это конечно возможно, но зачем, если Оберона во многом достаточно. И всё это - без использования виртуальной машины. Или с ней, если понадобится.

