1

我想使用检查功能来检查该项目是在列表中还是在子列表中。但是这个错误真的让我很困惑。有人可以告诉我我的代码有什么问题吗?

(define check
 (lambda(item lis)
  (cond((null? lis) #f)
       (else(if(pair? (car lis)) 
               (if(check item (car lis)) #t (check item (cdr lis))) 
               (if(equal? item (car list)) #t (check item (cdr lis))))))))


> (check 'a '(a b))
. . car: contract violation
  expected: pair?
  given: #<procedure:list>
4

1 回答 1

2

你这里有一个错字:

(equal? item (car list))

它应该是:

(equal? item (car lis))

请注意,这list是一个过程,代码中的参数称为lis.

于 2013-10-17T20:13:42.963 回答