例えば:
(check-expect(2-list empty (list 3 4)) empty)
(check-expect(process-2-lists (list "nice" 'blue) empty)(list "nice" 'blue))
(check-expect(process-2-lists (list "nice" 'blue 5 10 5 'blue 5) (list "nice" 5 5 'red "wow")) (list 'blue 10 'blue))
いつものように、人々は自分の宿題を解決することを期待しています。それが学ぶ唯一の方法です!
(define (process-2-lists l1 l2)
(cond (<???> ; if the first list is empty
<???>) ; then we return the empty list
(<???> ; if the first element in l1 is not in l2 (*)
(cons <???> ; then we add it to the result using cons
(process-2-lists <???> l2))) ; and advance the recursion
(else ; otherwise
(process-2-lists <???> l2)))) ; advance the recursion adding nothing
リストの 1 つだけをトラバースする必要があることに注意してください。もう 1 つのリストは、それをチェックするために必要です。ここで重要な行は、 でマークされた行です(*)
。これをどのように行うのですか?別のリストの要素のメンバーシップをテストするための独自のヘルパー プロシージャを作成することもできますが、ドキュメントを参照すると、必要なものだけが見つかります。
リスト内のアイテムをフィルタリングするb。
(filter
(lambda (item)
(not (member item b)))
a)