从方案列表中获取元素

Get element out of list in scheme

我有这样的客户信息列表;

(迈克美国嫁给约翰英国单身凯特德国嫁给汤姆美国单身...)

我想定义名为 find 的方案函数来检索给定名称的客户信息。

例如:- 找到 Kate -> (德国结婚)

提前致谢!!

假设列表始终具有正确的结构,迭代它很简单,一次推进三个项目:

(define (find data name)
  (cond ((null? data) #f)
        ((equal? (car data) name)
         (list (cadr data) (caddr data)))
        (else (find (cdddr data) name))))

例如:

(define data
  '(Mike USA married John UK single Kate Germany married Tom USA single))

(find data 'Kate)
=> '(Germany married)

(find data 'Bob)
=> #f