Вам разрешили чтоли наконец?
Но интересно, есть ли более адекватный способ сделать это?
зачем самой операции упрощения возвращать IO?
Вы контракт с сла с ними заключали?
Или может оплачиваете разработку?
Она простая?
А ты внутрь акки заглядывал?
Кстати да )
Ба! Даже без масок! Вам разрешили чтоли наконец? 😉
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип
Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()
При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.
Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип
Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()
При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.
Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔
Можно попробовать через Ref
https://typelevel.org/cats-effect/docs/std/ref
An asynchronous, concurrent mutable reference.
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип
Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()
При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.
Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔
зачем самой операции упрощения возвращать IO?
Представим, что уравнение гигантское и мы хотим параллелизовать это действие
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип
Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()
При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.
Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔
Можно стримами Будет что-то вроде (в зависимости от того какие стримы возьмешь) Stream[Equation].mapF(equation => reduce(equation).map(reduced => (equation, reduced))).buffer(19).to(sink)
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип
Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()
При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.
Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔
просто напрямую возвращать из функции все, что хочется напечатать, — самое простое
Я вообще-то ок с тем что либа говно. Просто мне не понятно почему ее используют и рекомендуют.
Я вообще не понимаю почему мы обязаны контракт с опенсурсом заключать чтобы получить право его обсирать
Потому что она простая и не требует вымучивания тонны непонятной аыдумки от аккаписателей с их «идиоматичными абстракциями»
Она простая? Ты внутрь заглядывал?
А ты внутрь акки заглядывал? Там все ещё хуже