方案:比较列表大小

| 我的计划程序有问题。我正在尝试接受2个列表并比较它们的大小,如果大小相等,则返回true,否则返回false。每个原子的值无关紧要。 例:
(structeq \'(a (b(c))) \'(1(2(3)))) => #t
(structeq \'(x) \'(()) => #f
这是我的代码:
(define (structeq list1 list2)
    (cond ((null? list1) list2)
    (eq? (length list1) (length list2))))

(structeq \'(a b c d) \'(a b c))
但是,这将返回最后一个列表的大小。我要去哪里错了? 编辑:取消此问题。我想通了,我只需要删除cond语句。     
已邀请:
注意:
(define (same-length a b)
  (if (and (null? a) (null? b)) #t
      (if (or (null? a) (null? b)) #f
          (same-length (cdr a) (cdr b)))))
一旦找到较短列表的末尾,它将停止。     
(eq? (length list1) (length list2)))) 
您代码中的这一行有一个谓词,但没有结果。如果它们相等,则要返回#t。 当列表的长度不相等时,添加一个else大小写来捕获也将是很好的。例如:(其他#f) 在这里阅读更多关于条件句的信息。     

要回复问题请先登录注册