Библиотеку, делающую эмуляцию yield не подскажете?
От: elmal  
Дата: 23.07.14 14:06
Оценка:
Хочу написать ленивый итератор, делающий обход в ширину возможно циклического графа.

Конечно, могу написать таким кодом, что там сам черт ногу сломит, громоздко, но хотелось бы элегантности.

Вот код, который бы хотелось иметь:
    @Continuable
    public static <T> Iterable<Integer> bfIterate(T object, Function<T, Collection<T>> childExtractor) {
        Queue<T> queue = new LinkedList<>();
        queue.add(object);
        Yield.ret(object);
        while(!queue.isEmpty()) {
            T node = queue.remove();
            for(T child : childExtractor.apply(node)) {
                Yield.ret(child);
                queue.add(child);
            }
        }
        return Yield.done();
    }


Использовал библиотеку jyield. Но здесь меня не устраивает, что требуется дополнительная обработка Java кода, выполнения
java -javaagent:../../jyield-0.0.6-jar-with-dependencies.jar над исходниками или байт кодом, что создает некоторый геморрой при сборке, запуске тестов и т.д.

Кто нидь библиотеку не требующий выполнения -javaagent может сказать? Или придется самому лисапед писать?

Если что, Java 8, Spring 4 — все фичи доступны.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.