Как насчет обертывания объекта, подобного итератору, в объекте, который фактически реализует интерфейс Iterator
? Что-то вроде следующего (не проверено):
(defn iteration-seq [iteration]
(iterator-seq
(reify java.util.Iterator
(hasNext [this] (.hasNext iteration))
(next [this] (.next iteration))
(remove [this] (.remove iteration)))))
Насколько я могу судить, единственное преимущество (если вы хотите так его назвать) интерфейса Iteration
перед стандартным интерфейсом Iterator
состоит в том, что он позволяет объявлять проверенные исключения, которые не используются в Clojure. в любом случае.
[Обновление: исправлен код для использования iterator-seq
вместо seq
, как предложил @amalloy в комментарии к другому ответу.]