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).removedoes exist in R6RS and does what you want:In the scheme dialect Racket you have both
removeandremove*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#!R6RSis the same as(remove* '(()) lst)in#!racket.remove*seems to be made to remove all of the matching elements: