我有两个列表,其中包含下一个内容:
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)
)
l2
0应该返回at1和at2的心房特异性,即l2
。但是,对于上面的代码,它不起作用,因为它像两个部分一样使用l1 = ((at1) (at2))
(长度l1=2),而不像一个实例。如果我取l2
,它包含2个实例,那么结果将是l3
,每个实例有2个特殊化的矩阵,即像l2
这样的列表,每个列表有4个实例和2个矩阵。问题是,当l1
进入时,它考虑了(at1)
和(at2)
,但没有((at1)(at2))
。我该怎么做?谢谢你的帮助!
(cond (not (null? l1) ...))
此表单将评估l1
0,这被证明是过程#<procedure:not>
,并且由于除了#f
之外的所有内容都是真的,因此它将从(null? l1)
开始评估链的其余部分。。
你没有关于它应该如何工作的例子,所以我就到此为止。对于Scheme来说,这太迫切了。