Нет причин для этого. Представьте себе, этот пример:
(cond ((cond ((< x 10) #t)
((> x 20) #t)
(else #f))
#t)
((cond ((< y 10) #t)
((> y 20) #t)
(else #f))
#t))
Это может быть легко flattended к одной cond
:
(cond ((< x 10) #t)
((> x 20) #t)
((< y 10) #t)
((> y 20) #t)
(else #f))
Вы можете использовать or
занять первое истинное значение. Это работает для всех истинных ценностей, а не только #t
(Все не #f
считается истинным)
(or (cond ((< x 10) 'small-x)
((> x 20) 'big-x)
(else #f))
(cond ((< y 10) 'small-y)
((> y 20) 'big-y)
(else #f)))
Даже если вы можете использовать cond
для каждого условного его, вероятно, целесообразно использовать только там, где есть либо побочные эффекты, связанные или там являются более чем одним предикатом (например, elseif на языках Алгола) и используют if
как условный для одного предиката. Например. Вы можете написать один из суб- cond
с выше этого:
(cond ((>= 20 x 10) #f)
(else #t))
Теперь я автоматически изменился с cond
до if
, поскольку это уже не nessecary для cond
:
(if (>= 20 x 10)
#f
#t)
Может быть, плохо пример, так как весь if
можно написать (not (>= 20 x 10))
.