Во-первых, давайте уточним формат вашей базы данных.Составьте список списков:
(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))
Тогда мы можем сделать нечто очень похожее для secondExams.За исключением того, что на этот раз мы рекурсивно создадим список совпадений.
(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))
Я не тестировал этот код, но я уверен, что он будет работать для вас.