私は、Scheme の assoc に似た手順を書こうとしています。2 つの唯一の違いは、プロシージャが指定されたキーに関連する値のみを返すようにすることです。 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) )))
自分の手順が意図したとおりに機能しない理由がわかりません。私の手順の誤りを指摘していただけると大変嬉しく思います。前もって感謝します。