![](/img/trans.png)
[英]In Dr. Racket, how would I display the 2 elements in a list in the opposite order?
[英]Dr. Racket: Removing elements from a list using abstract list functions
因此,当给定两个列表时,如何仅使用地图,过滤器或文件夹将一个列表中的元素从另一个列表中删除? 我也不能使用显式递归或lambda。
列表仅包含按升序排列的数字。
例如,如果给定(列表1 2 3)和(列表1 3 5),我想从第一个列表中删除第二个列表的所有元素。 我想要的输出是(清单2)。 如果给出(清单4 5 6)和(清单2 3 5),我会得到(清单4 6)。
我猜最终的代码是这样的:
(define (fn-name list-one list-two)
(filter ... list-one))
谢谢!
您使用filter,但是必须咖喱和倒置member
所以如果没有lambda
,您将无法做到。
(define (remove-elements needles haystack)
(filter (lambda (x) (not (member ...)))
haystack))
(define (remove-elements needles haystack)
(define (not-in-needles x)
(not (member ...)))
(filter not-in-needles haystack))
这两个都使用lambda
两次! 一次是为remove-elements
define
,一次是显式/ not-in-needles
。 在您自己的示例中,由于(define (name . args) . body)
与(define name (lambda args . body))
相同,因此您也使用了lambda
(define name (lambda args . body))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.