我对Racket / Scheme几乎是新手。我知道基本的语法
我编写了一个用list2做list1的笛卡尔积的程序。我使用Dr Racket调试了程序。似乎当l2变为null时,程序不会用原始列表替换l2,即ol2(我正在尝试这样做)。
我无法弄清楚为什么会这样。
(define product (lambda (ol2 l1 l2)
(cond
[(and (null? l1) (null? l2)) '()]
[(null? l2) (product ol2 (rest l1) ol2)]
[else (cons (list (first l1) (first l2)) (product ol2 l1 (rest l2)))])))