Réponse:
La traduction naïve donne:
function
quatre (n : integer) : integer;
begin
quatre := ((n * n) * (n * n)) * ((n * n) * (n * n))
end
;
L'argument de
carré
(par exemple
(n*n)
mais aussi
carré (n*n)
) est évalué deux fois (au toral
(n*n)
est évalué quatre fois) ce qui est inefficace.