Y-Kombinationsdiskussion in „Der kleine Schemer“
Daher habe ich viel Zeit damit verbracht, das Ende von Kapitel 9 in zu lesen und erneut zu lesenDer kleine Schemer, wo der anwendbare Y - Kombinator für dielength
Funktion. Ich denke, meine Verwirrung läuft auf eine einzige Aussage hinaus, die zwei Versionen der Länge gegenüberstellt (bevor der Kombinator herausgerechnet wird):
<code>A: ((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? l) 0 ) (else (add1 ((mk-length mk-length) (cdr l)))))))) B: ((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) ((lambda (length) (lambda (l) (cond ((null? l) 0) (else (add1 (length (cdr l))))))) (mk-length mk-length)))) </code>
Seite 170 (4. Aufl.) gibt an, dass A
Gibt eine Funktion zurück, wenn wir sie auf ein Argument angewendet haben
während B
gibt keine Funktion zurück
Dadurch entsteht eine unendliche Regression der Selbstanwendungen. Ich bin verblüfft. Wenn B von diesem Problem geplagt wird, verstehe ich nicht, wie A es vermeidet.