ISeq

protocolsince v0.0-927 clojure.lang/ISeqEdit
implemented for ArrayNodeSeq ChunkedCons ChunkedSeq Cons Cycle ES6IteratorSeq EmptyList IndexedSeq IntegerRange IntegerRangeChunk Iterate KeySeq LazySeq List NodeSeq PersistentArrayMapSeq PersistentQueue PersistentQueueSeq PersistentTreeMapSeq RSeq Range Repeat ValSeq

Source docstring:
Protocol for collections to provide access to their items as sequences.
Source code @ clojurescript:src/main/cljs/cljs/core.cljs
(defprotocol ISeq
  (-first [coll]
    "Returns the first item in the collection coll. Used by cljs.core/first.")
  (^clj -rest [coll]
    "Returns a new collection of coll without the first item. It should
     always return a seq, e.g.
     (rest []) => ()
     (rest nil) => ()"))