我想编写一个函数,它需要两个参数列表并检查第一个元素中是否包含第二个元素(元素的顺序无关紧要)。该函数也将检查两个列表是否具有相同的长度(两个列表不能有重复的元素),因为如果不是,那么函数将返回nill/false。LISP:如何测试两个列表是否具有相同的元素?
例如: (ABCDEF)和(BEAFDC)具有相同的元件 (零)和(无)具有相同的元件
(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)))
我希望我解释得很好的问题。
感谢您的回答。是否有可能只用一个函数来编写所有这些?我想知道你为什么写成员函数;它在LISP中还不存在? – seby598
当然有一种方法,但我认为这不会很简单!和是的成员函数已经存在,但我忘了。我没有在LISP上编程已经有一年多的时间了。 – Kira