我有一个列表列表,我想从中删除所有空列表。
我的清单是(("O") ("O") ())
。
如果我做
(remove '() '(("O") ("O") ()))
我得到正确的输出(("O") ("O"))
但是remove*
(从文档中删除所有出现)我得到相同的输入列表,即:
(remove* '() '(("O") ("O") ()))
还给我
(("O") ("O") ())
我究竟做错了什么?
我有一个列表列表,我想从中删除所有空列表。
我的清单是(("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))
在方案方言 Racket 中,您同时拥有remove
并且remove*
似乎您正在使用球拍,因为它确实按照您描述的方式工作。 remove*
获取要删除的项目列表。因此(remove '() lst)
in与in#!R6RS
相同。似乎要删除所有匹配的元素:(remove* '(()) lst)
#!racket
remove*
(remove* '(() (2)) '(() (1) (2) () ())) ; ==> ((1))