I have a list of list and I want to remove all the empty list from it.
My list is (("O") ("O") ())
.
If I do
(remove '() '(("O") ("O") ()))
I get the right output (("O") ("O"))
but with remove*
(which from the documentation remove all the occurence) I get the same input list, i.e.:
(remove* '() '(("O") ("O") ()))
gives me back
(("O") ("O") ())
What am I doing wrong?
First off,
remove*
doesn't exist in Scheme (R5RS, R6RS, R7RS).remove
does exist in R6RS and does what you want:In the scheme dialect Racket you have both
remove
andremove*
and it seems you are using racket since it does work in the way you are describing.remove*
takes a list of items to remove. Thus(remove '() lst)
in#!R6RS
is the same as(remove* '(()) lst)
in#!racket
.remove*
seems to be made to remove all of the matching elements: