Я пытаюсь написать процедуру, аналогичную процедуре Scheme assoc. Единственная разница между ними заключается в том, что я хочу, чтобы моя процедура возвращала только значение, связанное с заданным ключом, где as assoc дает всю пару (key . value). Вот моя процедура:
(define alist '((a . 1) (b . 2) (c . 3)))
(define (search-list key list)
(cond ((null? key) #f)
((eq? (caar list) key) (cdar list))
((null? (cdr list)) #f)
(else search-list key (cdr list))))
Кажется, я на правильном пути - (search-list 'a alist) возвращает 1. Однако при тестировании с (search-list 'b alist) мой вывод: ((b . 2) (c . 3 ))
Я не могу понять, почему моя процедура не работает так, как я хочу. Я был бы очень рад, если бы вы указали на ошибку в моей процедуре. Заранее спасибо.