确保lisp中的2个列表长度相同的最简单方法是什么?

时间:2010-10-27 02:04:50

标签: lisp

鉴于2个列表,我想确保它们的大小相同,我在使用此代码时遇到了困难。我应该使用变量来做到这一点吗?

(defun samesize (list1 list2)
  (cond (;logic here) T))

3 个答案:

答案 0 :(得分:7)

Common Lispelisp都有length

(defun samesize (list1 list2)
  (= (length list1) (length list2)))

答案 1 :(得分:2)

如果您想自己实现,可以使用递归。

如果两个列表都是空的,则它们的大小相同。如果一个是空的而另一个不是,则它们的大小不同。如果这些都不是真的,那么它们的大小相同,因为那些列表没有一个元素(即它们的cdr - s)

答案 2 :(得分:0)

无需明确使用长度两次。

(defun samesize (l1 l2)
  (apply #'= (mapcar #'length (list l1 l2)))

这可能看起来像是浪费了精力,但是对于更长的函数名称,这种事情很有用。

我也希望展示一个新概念。

干(不要重复)