> -- adimetrius писал(а):
> Любопытно, а как реализовать StdInterpreter без процедурных типов? Т.е. возможность вызывать команды из текста?Если речь о получении через мета-информацию процедурной переменной для её вызова, то разве нельзя заменить возврат процедурной переменной на возврат записи с процедурой?

> -- adimetrius писал(а):
> Если бы только для колбэков были нужны процедурные типы, то место им было бы - в SYSTEM. Но можно ли систему Оберон сделать без процедурных типов - интересно в плане необходимости и достаточности этого средства в языке.Вы правильно подмечаете про SYSTEM, тем более, что в общем случае аргументы из исходного языка могут не отображаться напрямую в КП. Но с замкнутой на себе системе всё ещё проще.
Было:
## Код:
```
MODULE IndirectCall;

TYPE Proc*= PROCEDURE(i: INTEGER);

VAR proc: Proc;

PROCEDURE Install*(p: Proc);
BEGIN   proc := p
END Install;

PROCEDURE Go*;
BEGIN   proc(2)
END Go; 

END IndirectCall.
```

Стало:
## Код:
```
MODULE IndirectCall;

TYPE Proc*= POINTER TO ABSTRACT RECORD END; 

VAR proc: Proc;

PROCEDURE (p: Proc) Do*(i: INTEGER), NEW, ABSTRACT;

PROCEDURE Install*(p: Proc);
BEGIN   proc := p
END Install;

PROCEDURE Go*;
BEGIN   proc.Do(2)
END Go; 

END IndirectCall.
```

Нужны примеры, где этого не хватает. А так - есть несколько трансляторов Oberon в Java, а там нет никаких процедурных переменных.