Пишу несложную программу:
program test;
function add(c1, c2 : integer) : integer;
begin
add := c1 + c2;
WriteLn('test');
end;
begin
WriteLn('Hello world ', add(1, 2));
end.
ожидаю получить вывод:
test
Hello world 3
получаю
Hello world test
3
Почему так? Такое ощущение что второй параметр вычисляется не перед вызовом WriteLn, а как-то лениво. В документации про ленивость ничего найти не смог, вижу только value parameters / variable parameters, то есть по сути либо по ссылке либо по значению, но передаться параметры должны сразу же.