我想使用check函数来检查项目是在列表中还是在子列表中。 但这个错误让我很困惑。有人能告诉我我的代码有什么问题吗?
(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>
答案 0 :(得分:2)
你在这里有一个错字:
(equal? item (car list))
应该是:
(equal? item (car lis))
请注意,list
是一个过程,代码中的参数称为lis
。