如何从Scheme中的对列表中返回一对?

时间:2017-02-10 02:31:02

标签: scheme

我有一个存储有对的列表。

'((a (b 1))
  (b (c 2))
  (c (d 3))
  (d (e f)))

 (define    (compare-unit unit-to-check source)
  (cond ((null? source) '())
        ((equal? (car source) unit-to-check) (car source))))

在我的程序中,我想检查搜索查询是否等同于列表中对的汽车,并返回给定的对。

例如,如果搜索查询的(a x)(a (b 1))(a x)的车辆相同,我想返回(a (b 1))

1 个答案:

答案 0 :(得分:2)

有一个内置的程序可以满足您的需求 - 它被称为assoc

(define (compare-unit unit-to-check source)
  (assoc (car unit-to-check) source))

例如:

(define source
  '((a (b 1))
    (b (c 2))
    (c (d 3))
    (d (e f))))

(compare-unit '(a x) source)
=> '(a (b 1))