假设我有2个列表。
(define wholelist '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20))
(define firstlist '(1 3 4 6 7 8 10 13 15 18))
(define (removelist list1 list2)
(remove* list1 list2))
(removelist firstlist wholelist)
> '(2 5 9 11 12 14 16 17 19 20)
它完美无缺。但我想做的是,假设我想从整个列表中删除另一个列表,但这一次,整个列表将是上述代码的结果。
(defind secondlist '(2 3 5 6 7 10 13 16 17 18 19 20))
(removelist secondlist wholelist)
> '(1 4 8 9 11 12 14 15) --> i want this result as '(9 11 12 14)
所以我希望整个列表不断更新,以便我可以使用它进行进一步的计算。 有没有办法在不定义新列表的情况下将整个列表值更改为第一次计算的结果?
非常感谢你!
答案 0 :(得分:0)
所以你想要的是
> (removelist secondlist (removelist firstlist wholelist))
'(9 11 12 14)
如果您需要将其拆分为两个步骤,则需要将(removelist firstlist wholelist)
的中间结果与define
,let
或set!
绑定,具体取决于具体情况:< / p>
set!
(不推荐)define
或let
。后者的例子:
> (let ((wholelist (removelist firstlist wholelist)))
(removelist secondlist wholelist))
'(9 11 12 14)