我正在尝试编写一个类似于 Scheme 的 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 ))
我不明白为什么我的程序没有按我的意愿运行。如果您能指出我的程序中的错误,我将非常高兴。提前致谢。