What is `ISeqable` in Clojure and how does it relate to `ISeq` (`clojure.lang.ISeq`)
10:20 23 Aug 2019

In Joy of Clojure, 2nd edition, page 217, we read:

You may have noticed that we've been using our own function xseq throughout the examples in this section, instead of Clojure's seq. This shouldn't be necessary, because Clojure provides an ISeqable interface that its seq function can use - all you need to do is to have your own type implement ISeqable.

The text then proceeds to declare a type protocol-implementing an ISeq, more precisely

(deftype InfiniteConstant [i]
   clojure.lang.ISeq
   (seq [this]
      (lazy-seq (cons i (seq this)))))

Apart from the mis-use of the the word "interface", which is a concept from the Java-level, instead of "protocol", which is a concept from the Clojure-level, is ISeqable a real concept or is it something that was left uncorrected during editing?

The index lists "ISeqable interface" only for that very page, and "ISeq interface" for another page.

clojure