В Clojure вы можете просто вызвать (seq collection) для любой коллекции Iterable (например, вашего FooList) и получить ленивую последовательность, которая пересекает коллекцию.Хотя на самом деле лень мало что дает вам, так как вы уже загрузили полный FoolList на стороне Java.
Если вы действительно хотите лень как в Clojure, так и в Java, тогда вы можете сделать следующее:1004 *
Пусть ваша функция Java возвращает пользовательскую реализацию java.util.Iterator, а не полную коллекцию.Чтобы получить ленивое чтение, вы должны убедиться, что readLine () вызывается только один раз за итерацию (в методе next () или hasNext ()).Не забудьте закрыть () читатель, когда дойдете до конца файла.
На стороне Clojure создайте отложенный запрос с помощью (iterator-seq java-iterator)
Если вы сделаете это, ваш файл будет считываться и анализироваться постепенно по мере использования последовательности Clojure.