【发布时间】:2011-11-05 02:29:42
【问题描述】:
函数manageFirstList 应该递归地将一个元素同时复制到全局列表x。
(define test1DataA '(("a" "a") ("b" "b") ("c" "c") ("d" "d") ("e" "ok")))
(define test1DataB '(("a" "aa") ("b" "bb") ("c" "cc") ("d" "dd") ("ok" "Ir OK!")))
(define x '())
(define manageFirstList
(lambda (a b)
((cond ((not (null? b))
((append x (car a))
(manageFirstList (cdr a) b)))))))
(define ff (lambda (a b) (manageFirstList a b)))
(ff test1DataA test1DataB)
但它会导致错误:
car: expects argument of type <pair>; given '()
问题是:
- 如何更新全局值“x”?
- 如何以正确的方式连接列表?
-
我可以像这样调用超过 1 个函数(或者是否有解决方法):
((append x (car a)) (manageFirstList (cdr a) b))
编辑:我要做的是创建一个列表,其中包含每个 test1DataA 列表项的第一个值和每个 test1DataB 列表项的第二个值,其中 test1DataA 列表元素的第二个值与其列表的 test1DataB 第一个值相同元素。
【问题讨论】: