我正在进行分配,我们必须根据谓词(甚至?)对列表进行分区。 例: (filter-sps甚至?'(1 2 3 4 5 6 7 8 9 10)'())
输出: (2 4 6 8 10) (1 3 5 7 9)
我无法生成2个单独的列表。
答案 0 :(得分: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))
如果列表很长,那么两次迭代同一个列表是浪费的,但是对于你的例子它可以忽略不计