Если ли хорошая реализация ленивой монады в Java?

Нужна простая библиотека отложенных вычислений для java. По существу - один класс. Инициализируется функциейT Lazy<T> of(Supplier<T> s)

Минимальный интерфейс - метод get, при первом вызове запускает упомянутый Supplier и кеширующий его ответ. При втором вызове - просто возвращает значение из кеша.
Есть что-то такое уже готовое?

PS Это вообще монада?
  • Вопрос задан
  • 312 просмотров
Решения вопроса 1
@guras256
1) kotlin
2) своя реализация за 5 минут
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Это вообще монада?

Нет, это реализация ленивых вычислений. К монадам отношение это не имеет.
Ответ написан
Комментировать
@bromzh
Drugs-driven development
Можно взять Rx. Там есть такая штука, как BehaviorSubject. Все новые подписчики будут получать значение из "кэша". При обновлении данных все подписчики получат их.
Единственная проблема - BehaviorSubject нужно инициализировать начальными данными.
Но также в Rx есть так называемые "холодные" Observable. Там цепочка вычислений/действий не будет вызвана, пока нет подписчиков. Т.е. это та ленивость, что нужна. И скорее всего, есть способ сделать и ленивость и кэш с помощью Rx, просто я не так хорошо знаю эту либу. Но гугл должен знать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы