scheme的cond表达式基本形式是
(cond (<p1> <e1>)
(<p2> <e2>)
...
(<pn> <en>))
其中(<p> <e>)中的<p>是谓词,就是值为真或假的表达式;<e>是表达式的序列,就是可以是许多个语句,不用什么连起来。
比如我想打印一个a<x<b内的奇数,就可以这样写:
(define (print-odd a b)
(cond ((and (= (remainder (+ a 1) 2) 1) (< (+ a 1) b)) (display (+ a 1)) (newline) (print-odd (+ a 1) b))
((< a b) (print-odd (+ a 1) b))
(else (display "Done!"))))
再调用(print-odd 0 10)就会打印
1
3
5
7
9
Done!