XLISP remove

Nyquist / XLISP 2.0 - Contents | Tutorials | Examples | Reference

# remove

Type: | - | function (subr)
Source: | - | xllist.c

## Syntax

(remove expr list-expr [{:test | :test-not} test])
  expr - the expression to remove, an atom or list
  list-expr - the list to remove from
  test - optional test function, default is eql
  returns - a copy of list-expr with matching expressions removed

## Description

The 'remove' function searches through 'list-expr' for 'expr'. If 'expr' is found, 'remove' returns the list with the 'expr' deleted. All occurances of 'expr' are deleted. If 'expr' is not found, then the 'list-expr' is returned unaltered. You may specify your own test with the ':test' and ':test-not' keywords followed by the test you which to perform. Note that this operation is non-destructive, it does not modify or affect 'list-expr' directly, it creates a modified copy.

## Examples

    (setq mylist '(a b c d it e f))       ; set up a list
    (remove 'it mylist)                   ; returns (A B C D E F)
    (print mylist)                        ; prints (A B C D IT E F)
                                          ;   note that MYLIST is not affected

    (setq mylist '(a b c b d b))          ; change list to include duplicates
    (remove 'b mylist)                    ; returns (A C D)

    (setq alist '( (a) (b) (it) (c)))     ; set up another list
    (remove '(it) alist)                  ; returns ((A) (B) (IT) (C))
                                          ;   the EQ test doesn't work for lists
    (remove '(it) alist :test 'equal)     ; returns ((A) (B) (C))

    (setq slist '( "a" "b" "it" "c"))     ; set up yet another list
    (remove "it" slist)                   ; returns ("a" "b" "c")
    (remove "it" slist :test-not 'equal)  ; returns ("it")
                                          ;   REMOVE takes away everything but IT

Note: The 'remove' function can work with a list or string as the 'expr'. However, the default eql test does not work with lists or strings, only symbols and numbers. To make this work, you need to use the ':test' keyword along with equal for 'test'.

Common Lisp: XLISP does not support the ':from-end', ':start', ':end', ':count' and ':key' keywords which Common Lisp does.

See the remove function in the XLISP 2.0 manual.

Back to Top

Nyquist / XLISP 2.0 - Contents | Tutorials | Examples | Reference