从方案列表中删除空白

use*_*128 2 scheme list removeall racket empty-list

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

我的名单是(("O") ("O") ()).

如果我做

(remove '() '(("O") ("O") ()))
Run Code Online (Sandbox Code Playgroud)

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

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

(remove* '() '(("O") ("O") ())) 
Run Code Online (Sandbox Code Playgroud)

让我回来

(("O") ("O") ())
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Syl*_*ter 6

首先,remove*在Scheme(R5RS,R6RS,R7RS)中不存在.remove在R6RS中确实存在并且做你想要的:

#!r6rs
(import (rnrs))
(remove '() '(() (1) (2) () ())) ;==> ((1) (2))
Run Code Online (Sandbox Code Playgroud)

在方案方言球拍你有两个removeremove*它似乎你正在使用球拍,因为它确实按照你描述的方式工作. remove*获取要删除的项目列表.因此(remove '() lst)#!R6RS相同(remove* '(()) lst)#!racket.remove*似乎是要删除所有匹配元素:

(remove* '(() (2)) '(() (1) (2) () ())) ; ==> ((1))
Run Code Online (Sandbox Code Playgroud)