ラムダを使用して、数値のリストを消費し、各数値の最初の出現以外のすべてを削除する関数を作成するように求める割り当ての質問があります。私の関数は、間違った結果を生成することを除いて、非常に優れていると思います! 各数値の最後の出現を含むリストを生成します。適切なリストと同じ値を持つリストを生成しますが、順序が異なります。これが私のコードです:
(define (remove-duplicates numlist)
(foldr (lambda (a b)
(cond
[(not (member? a b)) (cons a b)]
[else b])) empty numlist))
foldl
の代わりに使用してみましfoldr
たが、驚くことではありませんが、正しいリストが生成されますが、逆になります。foldl
別のラムダ式で作成されたリストを逆にすることに頼らずに、正しいリストを作成する方法はありますか?
これは宿題なので、明確な回答はしないでください。
みんな、ありがとう!