我想编写一个函数,它将两个列表作为参数,并检查第一个列表中的每个元素是否都包含在第二个列表中(元素的顺序无关紧要)。该函数还将检查两个列表是否具有相同的长度(两个列表不能有重复的元素),因为如果不是,则该函数将返回 nill/false。
例如: (ABCDEF) 和 (BEAFDC) 具有相同的元素 (nil) 和 (nil) 具有相同的元素
(ABCDEF) 和 (ABCDEFG) 没有相同的元素
问题是我只知道一些基本命令,我只能使用那些。这些几乎是我知道的所有命令:
CAR, CDR, LENGTH, NULL, MEMBER, NOT, AND, OR, NOT, MAPCAR, APPLY, DO, SETQ, LET
到目前为止,我编写了以下函数,但我不知道如何检查重复成员,并且它不适用于我要检查的所有列表:
(defun same-elem-p (lst1 lst2)
(cond ((not (null lst1))
(cond ((member (car lst1) lst2)
(same-elem-p (cdr lst1) lst2))
(t nil)))
(t t)))
我希望我能很好地解释这个问题。