protocolsince v0.0-927 clojure.lang/IPersistentStackEdit
implemented for BlackNode EmptyList List MapEntry PersistentQueue PersistentVector RedNode Subvec

Source docstring:
Protocol for collections to provide access to their items as stacks. The top
  of the stack should be accessed in the most efficient way for the different
  data structures.
Source code @ clojurescript:src/main/cljs/cljs/core.cljs
(defprotocol IStack
  (-peek [coll]
    "Returns the item from the top of the stack. Is used by cljs.core/peek.")
  (^clj -pop [coll]
    "Returns a new stack without the item on top of the stack. Is used
     by cljs.core/pop."))