不同列表中的长度



我有两个列表,其中包含下一个内容:

l1 = ((at1) (at2))

l2 = (((at11) (at21))((at12) (at22)))

其中CCD_ 1是从CCD_。

问题是:我认为l1就像一个问题的实例,所以l2将是同一问题的两个实例,但当我使用(长度l1)时,结果是2,这对于这种方法来说是不正确的。我试过做(list l1),结果是(length l1)=1,但这表明我的函数不能很好地创建l2

我试过使用这个代码,但是,有了这两个列表,它就不能正常工作了。有了它,l2可以创建另一个列表l3,但l1不能创建l2。代码是:

(define (applyfunc l1)
(let ((l2 '()))
(cond ((not(null? l1))
(for/list ([i (length l1)])
(set! l2 (append l2 (func l1))) 
)
)
)
l2)
)

l20应该返回at1和at2的心房特异性,即l2。但是,对于上面的代码,它不起作用,因为它像两个部分一样使用l1 = ((at1) (at2))(长度l1=2),而不像一个实例。如果我取l2,它包含2个实例,那么结果将是l3,每个实例有2个特殊化的矩阵,即像l2这样的列表,每个列表有4个实例和2个矩阵。问题是,当l1进入时,它考虑了(at1)(at2),但没有((at1)(at2))。我该怎么做?谢谢你的帮助!

(cond (not (null? l1) ...))

此表单将评估l10,这被证明是过程#<procedure:not>,并且由于除了#f之外的所有内容都是真的,因此它将从(null? l1)开始评估链的其余部分。。

你没有关于它应该如何工作的例子,所以我就到此为止。对于Scheme来说,这太迫切了。