2016-11-06 53 views
0

我正在分配任务,我们必须根据谓词(甚至?)分割一个列表。 实施例: (过滤SPS甚至 '(1 2 3 4 5 6 7 8 9 10)'()?)有人可以解释球拍的商店传球风格吗?

输出: (2 4 6 8 10) (1 3 5 7 9)

我无法生成2个单独的列表。

+0

还有一堆不同的方式来做这个。尽管如此,我并不一定选择商店传球作为最直接的方式。 我敢打赌,这是针对一个班级的,如果我们试图在没有更多了解班级背景的情况下回答问题,我们将不会以正确的方式指导您。所以:你可以多说一点关于这个问题的要求吗? –

+0

也可能值得一提的是,商店传递式就是这样一种风格。对于Racket而言,没有任何特定的存储通过;你可以用任何语言来做。它只是一种编程风格,而不是在数据结构上执行突变,将内存表示作为未来函数调用的参数传递(并返回它)。 –

回答

0

你可以简单地过滤两次:

(define lst '(1 2 3 4 5 6 7 8 9 10)) 

(define odd? (lambda (n) 
       (not (even? n)))) ; in case you don't have odd 

(cons (filter-sps even? lst) 
     (filter-sps odd? lst)) 

遍历同一个列表两次是一种浪费,如果列表很长,但是对于你的例子实在是微不足道