Опитвам се да напиша процедура, подобна на Scheme's assoc. Единствената разлика между двете е, че искам моята процедура да връща само стойността, свързана с дадения ключ, където assoc дава цялата двойка (ключ. стойност). Ето моята процедура:
(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 ))
Не мога да разбера защо моята процедура не функционира, както възнамерявам. Много ще се радвам, ако ми посочите грешката в моята процедура. Благодаря предварително.