首先,让我们澄清一下您的数据库格式。将其作为列表列表:
(define database
((10 math phys)
(11 math chem)
(13 bio chem)
(15 geo phys)))
然后time只需要递归地遍历列表,并将子列表的第一个元素与目标值进行比较。如果没有找到匹配的值,我们将返回空列表。我们将在助手过程中执行此操作,以匹配您正在精确查找的功能。
(define time-ish
(lambda (target lst)
(cond ((null? lst) lst)
((eq? target (caar lst)) (cdar lst))
(else
(time-ish target (cdr lst))))))
(define (time lookin-for)
(time-ish lookin-for database))
然后我们可以为第二次考试做一些非常类似的事情。不过这次我们将递归地构建一个匹配列表。
(define exam-helper
(lambda (target lst)
(cond ((null? lst) lst)
((eq? target (third (car lst))) (cons (first (car lst))
(exam-helper target (cdr lst))))
(else
(exam-helper target (cdr lst))))))
(define (secondExams lookin-for)
(exam-helper lookin-for database))
我还没有测试过这个代码,但我很确定它会对你有效。