如何cond在Scheme中有效?

时间:2016-04-03 16:53:19

标签: scheme

(define (list-ref items n)
  (cond ((null? items) "Out of range exception")
        ((= n 0) (car items))
        (list-ref (cdr items) (- n 1))))

(list-ref (list 1 2 3) 6)
5

为什么它总是返回(- n 1)的值?为什么它不执行(list-ref (cdr items) (- n 1))

1 个答案:

答案 0 :(得分:1)

你忘记了最后一句中的else

相反,它使用list-ref作为条件(由于所有过程都是真实的,因此总是真实的),并评估其他两个子表单并返回最后一个。