Es gibt keinen Grund, das zu tun. Stellen Sie sich folgendes Beispiel:
(cond ((cond ((< x 10) #t)
((> x 20) #t)
(else #f))
#t)
((cond ((< y 10) #t)
((> y 20) #t)
(else #f))
#t))
Diese leicht cond
einem werden kann flattended nach unten:
(cond ((< x 10) #t)
((> x 20) #t)
((< y 10) #t)
((> y 20) #t)
(else #f))
Sie or
verwenden könnte den ersten wahren Wert zu nehmen. Dies funktioniert für alle wahren Werte, nicht nur #t
(Alles, was nicht #f
ist wahr betrachtet)
(or (cond ((< x 10) 'small-x)
((> x 20) 'big-x)
(else #f))
(cond ((< y 10) 'small-y)
((> y 20) 'big-y)
(else #f)))
Auch wenn Sie cond
für jede bedingte seine wahrscheinlich weise nur darauf verwenden, wo es entweder Nebenwirkungen beteiligt, oder es können sind mehr als ein Prädikat (wie zB in Algol-Sprachen) und verwenden if
als Bedingung für ein Prädikat. Z.B. Sie können oben auf das eine der Teil cond
s schreiben:
(cond ((>= 20 x 10) #f)
(else #t))
Jetzt habe ich automatisch cond
-if
geändert hätte, da es für eine cond
nicht mehr nessecary ist:
(if (>= 20 x 10)
#f
#t)
Vielleicht eine schlechte Beispiel, da das ganze if
(not (>= 20 x 10))
geschrieben werden kann.