HTDPの演習 17.1.2 の質問に行き詰まっています。これは私がこれまでに得たものです:
(define (cross alist1 alist2)
(cond
[(empty? alist1) empty]
[else (append (list (first alist1)(first alist2))
(cons (first alist1)(list (first (rest alist2))))
(cross (rest alist1) alist2))]))
(cross '(a b c) '(1 2))
;correctly outputs (list 'a 1 'a 2 'b 1 'b 2 'c 1 'c 2)
これはテスト ケースでは機能しますが、2 番目のリストに 2 つ以上の要素がある場合、関数は崩壊します。
(cross '(a b c) '(1 2 3))
;outputs (list 'a 1 'a 2 'b 1 'b 2 'c 1 'c 2)
2 番目のリストから最大 2 つの要素をコンスするだけなので、問題は追加後の 2 行目にあるようです。これを解決するにはどうすればよいですか?洞察をありがとう。:)