> -- AVC писал(а):
> Вот я и проявляю беспокойство, пытаюсь разобраться в происходящем.Если нужен большой контекст, его имеет смысл облачить в RECORD и передавать указатель (VAR-параметр).
"Преимущественно функциональный стиль" позволяет, с одной стороны, исключить при написании подпрограммы вопрос "Куда поместить процедуру - локально или глобально?" и связанный с ним вопрос "А не может ли она в будущем пригодиться глобально?" С другой стороны, доступ к строго локальным объектам облегчает чтение процедур: все входные и выходные параметры явно перечислены, никаких побочных эффектов. Доступ к глобальным объектам, если его разумно ограничить, тоже не принесёт сюрпризов (я бы ввёл дополнительно список "импорта" глобальных переменных в процедуру). В этом случае каждая процедура текстом своего объявления являет практически полную спецификацию. Добавить автоматический анализ пред- и постусловий, и получим верифицирующий компилятор.

Удаление LOOP направлено на то же самое: повышение читабельности и верифицируемости. Это в Драконе на плоскости хорошо рисовать циклы с несколькими выходами, а при линейном чтении я всегда предпочитаю WHILE. Если нужно несколько выходов, то WHILE ~done.