我正在开发一个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)
但它没有用。
我非常感谢这里的一些建议。
答案 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)
展平列表并过滤'和& '或结果。