我做了一个函数,它采用列表和列表的两个元素 . 如果第二个参数出现在第三个参数之前的list参数中,它应返回#t:
如果任何假定的元素根本没有出现,该过程也应该返回#f .
这是我到目前为止所得到的:
(define (before-in-list? lst a b )
(cond
((empty? lst ) #f)
((eq? (car lst ) a) ( map b (cdr lst)) #t)
((eq? (car lst ) b) #f)
(else (before-in-list? (cdr lst ) a b ))))
测试它,我使用:
(before-in-list? '(back in the ussr) '(in) '(ussr))
(before-in-list? '(back in the ussr) '(the) '(ussr))
问题是每次都给我f .
有关如何修复它的任何提示吗?
1 回答
你使用
map
的方式没有意义 . 此外,您应该使用equal?
进行更一般的比较,a
和b
参数不应该是列表 . 试试这个: