如何使用球拍编程从列表中删除项目

时间:2015-02-07 16:14:40

标签: scheme racket

我正在开发一个racket程序,我需要在列表中传递一个表达式,并返回该列表中使用的变量。

输入:

'(A or (B and C))

输出:

'(A B C)

我尝试了以下代码:

(define Remove
  (lambda (L)
    (flatten L)))

输入:

'(A or (B and C))

它返回:

'(A or B and C)

现在,我想在此删除'or''and',只想要'(A B C)

我试过了:

(remove and L)

但它没有用。

我非常感谢这里的一些建议。

1 个答案:

答案 0 :(得分:0)

这是一个可能的解决方案:

(define (rm-and-or lst)
  (filter (lambda (x) 
            (and (not (equal? x 'and)) 
                 (not (equal? x 'or)))) 
          (flatten lst)))

(rm-and-or '(A and (B or C))) ==> '(A B C)

展平列表并过滤'和& '或结果。