Ich habe versucht, eine (einfache, d.h. ohne eqan?
) one?
als solche funktionieren:
(define one?
(lambda (n)
((= 1 n))))
Aber das obige funktioniert nicht, denn wenn ich es so aufrufe:
(one? 1)
Ich werde mit dieser Fehlermeldung begrüßt:
procedure application: expected procedure, given: #t (no arguments)
Der richtige Weg (von Der kleine Betrüger ) zu schreiben, ist:
(define one?
(lambda (n)
(cond
(else (= 1 n)))))
Warum ist es notwendig, eine cond
mit einer else
Klausel, anstatt nur die (= 1 n)
?