ClojureDocs

Nav

Namespaces

sequence

clojure.core

Available since 1.0 (source)
  • (sequence coll)
  • (sequence xform coll)
  • (sequence xform coll & colls)
Coerces coll to a (possibly empty) sequence, if it is not already
one. Will not force a lazy seq. (sequence nil) yields (), When a
transducer is supplied, returns a lazy sequence of applications of
the transform to the items in coll(s), i.e. to the set of first
items of each coll, followed by the set of second
items in each coll, until any one of the colls is exhausted.  Any
remaining items in other colls are ignored. The transform should accept
number-of-colls arguments
6 Examples
user> (sequence [1 2 3])
(1 2 3)
user> (class (sequence '(1 2 3)))
clojure.lang.PersistentList
;; let us make a transducer
user=> (def xf (comp (filter odd?) (take 5)))
#'user/xf
user=> (sequence xf (range 1 10))
(1 3 5 7 9)
;; turns a string into a sequence of characters:
(sequence "abc")
=> (\a \b \c)
;; combine a bunch of collections together
(sequence cat [[1 2 3] [5 6 7] [8 9 0]])
;=> (1 2 3 5 6 7 8 9 0) 
(sequence cat [ '(1 2 3) '(5 6 7) '(8 9 0) ])
;=> (1 2 3 5 6 7 8 9 0)
;; When called with multiples collections.

(sequence (map vector) [1 2 3] [:a :b :c])
;=> ([1 :a] [2 :b] [3 :c])
;; Comparison to seq
(def v [1 2 3])
(def l '(1 2 3))
(def ss (sorted-set 1 2 3))
(= (seq [1 2 3]) (sequence [1 2 3])) ;;=> true
(= (sequence v) (seq v))             ;;=> true
(= (sequence l) (seq l))             ;;=> true
(= (sequence ss) (seq ss))           ;;=> true

;; Comparison for non-ordered stuff
(def m {:a 1 :b 2 :c 3})
(def s #{1 2 3})
(sequence m)                         ;;=> ([:a 1] [:b 2] [:c 3])
(seq m)                              ;;=> ([:a 1] [:b 2] [:c 3])
(sequence s)                         ;;=> (1 3 2)
(seq s)                              ;;=> (1 3 2)
See Also

Returns a seq on the collection. If the collection is empty, returns nil. (seq nil) returns nil...

Added by alilee

Returns a reducible/iterable application of the transducers to the items in coll. Transducers are ...

Added by glts
2 Notes