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)
我究竟做错了什么?
首先,remove*在Scheme(R5RS,R6RS,R7RS)中不存在.remove在R6RS中确实存在并且做你想要的:
#!r6rs
(import (rnrs))
(remove '() '(() (1) (2) () ())) ;==> ((1) (2))
Run Code Online (Sandbox Code Playgroud)
在方案方言球拍你有两个remove和remove*它似乎你正在使用球拍,因为它确实按照你描述的方式工作. remove*获取要删除的项目列表.因此(remove '() lst)在#!R6RS相同(remove* '(()) lst)的#!racket.remove*似乎是要删除所有匹配元素:
(remove* '(() (2)) '(() (1) (2) () ())) ; ==> ((1))
Run Code Online (Sandbox Code Playgroud)