Pulpcode

捕获,搅碎,拼接,吞咽

0%

ANSI Common Lisp 第三章习题

问题:1.用箱子表示法表示以下列表:

1
2
3
4
(a) (a b (c d))
(b) (a (b (c (d))))
(c) (((a b) c) d)
(d) (a (b . c) d)

答案:

a
b
c
d


问题:2.写一个保留原本列表中元素顺序的 union 版本:

1
2
> (new-union '(a b c) '(b a d))
(A B C D)

答案:

1
2
3
4
5
6
7
(defun new-union(li li2)
(let ((x (copy-list li)))
(dolist(obj li2)
(if (member obj x)
()
(setf x (append x (cons obj nil)))))
x))

问题:4.为什么 (member ‘(a) ‘((a) (b))) 返回 nil?

答案:

这个题是不是写错了?我的上面并没有返回 nil。
返回的就是((a)(b))