remove

added
1.0

ns
clojure.core

type
function

(remove pred) (remove pred coll)

Returns a lazy sequence of the items in coll for which
(pred item) returns false. pred must be free of side-effects.
Returns a transducer when no collection is provided.

                (remove pos? [1 -2 2 -1 3 7 0])
;;=> (-2 -1 0)

(remove nil? [1 nil 2 nil 3 nil])
;;=> (1 2 3)

;; remove items that are evenly divisible by 3
(remove #(zero? (mod % 3)) (range 1 21))
;;=> (1 2 4 5 7 8 10 11 13 14 16 17 19 20)
            
                ;; compare to filter

(remove even? (range 10))
;;=> (1 3 5 7 9)

(remove (fn [x]
  (= (count x) 1))
  ["a" "aa" "b" "n" "f" "lisp" "clojure" "q" ""])
;;=> ("aa" "lisp" "clojure" "")

; When coll is a map, pred is called with key/value pairs.
(remove #(> (second %) 100)
       {:a 1
        :b 2
        :c 101
        :d 102
        :e -1})
;;=> ([:a 1] [:b 2] [:e -1])

            
                ;; remove items from a set/list

(remove #{:a} #{:b :c :d :a :e})
;;=> (:e :c :b :d)

(remove #{:a} [:b :c :d :a :e :a :f])
;;=> (:b :c :d :e :f)