вычисления двух типов:
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип
Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()
При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.
Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔
Можно попробовать через Ref
зачем самой операции упрощения возвращать IO?
Представим, что уравнение гигантское и мы хотим параллелизовать это действие
Можно стримами Будет что-то вроде (в зависимости от того какие стримы возьмешь) Stream[Equation].mapF(equation => reduce(equation).map(reduced => (equation, reduced))).buffer(19).to(sink)
Обсуждают сегодня