'begin'
'comment'
Jensen's Device
From Wikipedia, the free encyclopedia
Jensen's Device is a computer programming technique devised by
Danish computer scientist Jøensen after studying the ALGOL 60
Report.[citation needed]
The following program was proposed to illustrate the
technique. It computes the 100th harmonic number:
The above exploits call by name to produce the correct answer
(5.187...). It depends on the assumption that an expression
passed as an actual parameter to a procedure would be
re-evaluated every time the corresponding formal parameter's
value was required. If the last parameter to sum had been passed
by value, the result would have been 100 ×1/1 = 100.
Donald Knuth later proposed the Man or Boy Test as a more
rigorous exercise.
;
'begin' 'integer' i;
'real' 'procedure' sum (i, lo, hi, term);
'value' lo, hi; 'integer' i, lo, hi; 'real' term;
'comment' term is passed by-name;
'begin' 'real' temp; temp := 0;
'for' i:= lo 'step' 1 'until' hi 'do'
temp:= temp + term;
sum:= temp
'end';
outreal (1, sum (i, 1, 100, 1/i))
'end'
'end'