Pull to refresh

Comments 13

А почему не использовать StateT из scalaz или cats?
>Future — это сущность, описывающая результат некоторых вычислений, который мы получим не сразу, но в будущем.

По-моему, такая штука называется Promise. Хотя, возможно этот шаблон принято называть по-разному в разных ЯП.
да нет, это Future. Очень грубо разница между Future и Promise: в Promise пишем, из Future читаем. Словосочетание «получим результат» больше на чтение намекает.

Местами выглядит как переизобретение reactive streams и akka streams, да)

Или даже reactivex.io (там есть не только RxScala/RxJava, но и JS, и .NET, и Swift).
Совершенно не похоже. Указанные *-streams, например, имеют контроль back-pressure, и построены не на функциональном, а на реактивном принципе. Для полноты сравнения ещё можно посмотреть императивный подход: github.com/scala/async
насчет back-pressure, буферизации и прочих нужных вещей не заморачивался, тут чисто построение показано и минимальный api. Предполагается, что тот, кому это нужно, реализует все это в функции-генераторе gen:
def genAsyncStream[S,A](start: S)(gen: S => Future[(A, S)]): AsyncStream[A]
на reactive streams с первого взгляда вроде не очень похоже, akka streams — вроде да)
Только тут не только стримы, еще и stateful async computation до кучи, ну и в связке это все показано

В akka-streams по аналогии есть materealized values, которые позволяют делать хранить дополнительный state и обмениваться им.

В начале был пример про виджет с температурой, потом пошёл код. Этот код относится к этому примеру или к другой ситуации? К какой? И какую задачу выполняют эти сущности (Future)? Что было бы без этих сущностей?
1. Да, относится. Код показывает, как с помощью простой Future построить эти 2 сущности, с помощью которых был написан пример про виджет.
2. Future выполняют задачу отложенного предоставления результата вычислений. FState позволяет писать асинхронные псевдоалгоритмы с состоянием. AsyncStream позволяет формировать асинхронные последовательности значений.
3. Без Future будет плохо) Без вот этих конкретных FState и AsyncStream мы как-то живем и сейчас
Sign up to leave a comment.

Articles