
'begin'
	'comment'
		an example for the difference between call-by-name and
		call-by-value in recursive environments.
	;

	'integer' 'procedure' ONE;
	'begin'
		outstring (1, `ONE ');
		ONE := 1
	'end';

	'procedure' foo by val (ii);
	'value' ii;
	'integer' ii;
	    'if' ii > 0 'then' foo by val (ii - ONE);

	'procedure' foo by name (ii);
	    'if' ii > 0 'then' foo by name (ii - ONE);

	
	outstring (1, `by-name  : ');
	foo by name (5);
	outstring (1, `\nby-value : ');
	foo by val (5);
	outstring (1, `\n')
'end'

