Im Zusammenhang mit der Special-Form ``if'' ist natürlich die Auswertung des
zweiten Ausdrucks eines ``if''-Konstruktes nur dann vorzunehmen und sinnvoll,
wenn die Bedingung erfüllt ist, d.h. wenn das Ergebnis der Auswertung
des ersten Ausdrucks wahr ist. Dies ist der tiefste Grund, warum sich
ein ``if'' in Sprachen mit ``eager evaluation'' nicht als Primitiv-Funktion
implementieren lässt.
Primitives in Scheme
In Scheme kann mit Hilfe der Primitives ``delay'' und ``force''
das normalerweise
übliche Auswertungsverfahren bei Argumenten von Funktionen geändert werden.
Ein Ausdruck, der mit Hilfe von ``delay'' verpackt wird, erzeugt ein
``promise'' (ein Versprechen), das mit Hilfe von ``force''
eingelöst wird.