从方案中的列表列表中删除空列表



我有一个列表列表,我想从中删除所有空列表。

我的清单是(("O") ("O") ())

如果我这样做

(remove '() '(("O") ("O") ()))

我得到了正确的输出(("O") ("O"))

但是使用 remove*(从文档中删除所有出现),我得到相同的输入列表,即:

(remove* '() '(("O") ("O") ())) 

还给我

(("O") ("O") ())

我做错了什么?

首先,remove*在 Scheme (R5RS, R6RS, R7RS) 中不存在。 remove确实存在于 R6RS 中,并且可以执行您想要的操作:

#!r6rs
(import (rnrs))
(remove '() '(() (1) (2) () ())) ;==> ((1) (2))

在方言球拍方案中,您既有remove又有remove*,似乎您正在使用球拍,因为它确实以您所描述的方式工作。 remove* 获取要删除的项目列表。因此,#!R6RS中的(remove '() lst)#!racket中的(remove* '(()) lst)相同。 remove*似乎是为了删除所有匹配的元素:

(remove* '(() (2)) '(() (1) (2) () ())) ; ==> ((1))

相关内容

  • 没有找到相关文章

最新更新