我有一个 lisp 作业,我很难处理它。
我必须编写一个执行联合操作的函数。该函数接受 2 个输入,以原子或列表的形式,并联合每个元素,保留顺序并去除所有级别的括号。
函数的输出:
(my-union 'a 'b) ;; (a b)
(my-union 'a '(b)) ;; (a b)
(my-union '(a b) '(b c)) ;; (a b c)
(my-union '(((a))) '(b(c((d e))a))) ;; (a b c d e)
我对 lisp 很陌生。这是我到目前为止所写的内容,它仅适用于第三个示例:
(defun new-union (a b)
(if (not b)
a
(if (member (car b) a)
(new-union a (cdr b))
(new-union (append a (list (car b))) (cdr b)))))
任何帮助,将不胜感激!