我有一个作业问题,要求我使用 lambda 编写一个函数,该函数使用一个数字列表并删除除每个数字第一次出现之外的所有数字。我的功能是我认为很好,除了它产生错误的结果!它生成一个列表,其中包含每个数字的最后一次出现。它生成一个与正确列表具有相同值的列表,只是顺序不同。这是我的代码:
(define (remove-duplicates numlist)
(foldr (lambda (a b)
(cond
[(not (member? a b)) (cons a b)]
[else b])) empty numlist))
我尝试过使用foldl
而不是,foldr
但毫不奇怪,它会产生正确的列表,但相反。有没有一种方法可以生成正确的列表,而无需foldl
使用另一个 lambda 表达式来反转由创建的列表?
请记住,这是作业,所以请不要明确回答。
感谢大家!