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にかなり慣れていません。これは私がこれまでに書いたもので、3番目の例でのみ機能します:
(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)))))
どんな助けでも大歓迎です!