Но интересно, есть ли более адекватный способ сделать это?

|
Sergey 🐉 Rublev 2022-06-25 22:22:11
danicheg 2022-06-25 20:24:39
отмечаете релиз ZIO 2.0?

Кстати да )

aleksei_t 2022-06-26 09:40:13
pvoznenko 2022-06-25 20:27:54
Пьём и радуемся релизам на местном саммер фесте в Мюнхене

Ба! Даже без масок! Вам разрешили чтоли наконец? 😉

zkerriga 2022-06-26 12:14:01
Привет! Я хочу сделать for, в котором будут происходить IO вычисления двух типов:
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип

Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()

При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.

Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔

plzgiveup 2022-06-26 12:26:51
zkerriga 2022-06-26 12:14:01
Привет! Я хочу сделать for, в котором будут происходить IO вычисления двух типов:
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип

Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()

При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.

Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔

Можно попробовать через Ref
https://typelevel.org/cats-effect/docs/std/ref

Ref · Cats Effecttypelevel.org
An asynchronous, concurrent mutable reference.
simpadjo 2022-06-26 12:30:46
zkerriga 2022-06-26 12:14:01
Привет! Я хочу сделать for, в котором будут происходить IO вычисления двух типов:
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип

Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()

При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.

Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔

зачем самой операции упрощения возвращать IO?

zkerriga 2022-06-26 12:31:47
simpadjo 2022-06-26 12:30:46
зачем самой операции упрощения возвращать IO?

Представим, что уравнение гигантское и мы хотим параллелизовать это действие

fomkin 2022-06-26 12:34:09
zkerriga 2022-06-26 12:14:01
Привет! Я хочу сделать for, в котором будут происходить 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)

simpadjo 2022-06-26 12:35:44
zkerriga 2022-06-26 12:14:01
Привет! Я хочу сделать for, в котором будут происходить IO вычисления двух типов:
1. IO[String], строки из которых должны будут накапливаться в буффере (типа печать в консоль, но без печати)
2. Любые другие IO[A], которые будут влиять на первый тип

Задача выглядит примерно так:
уравнение =>
for {
_ <- распечатать(уравнение)
упращённое <- упростить(уравнение)
_ <- распечатать(упрощённое)
} yield ()

При этом функции печатати и упрощения возвращают IO. А результатом всего хочется видеть накопленный буффер печати.

Я попробовал реализовать это с помощью StateT (scastie). Но интересно, есть ли более адекватный способ сделать это? 🤔

просто напрямую возвращать из функции все, что хочется напечатать, — самое простое

∫f(x)dx 2022-06-27 14:11:22
Обязаны я считаю
apache_dog 2022-06-27 14:12:05
Я вообще не понимаю почему вы про опенсорс так говорите как будто вам что то должны
fomkin 2022-06-27 14:12:12
О господи. Сходи по ссылке, там все есть. Один. Сраный. Клик.
apache_dog 2022-06-27 14:12:19
Вы контракт с сла с ними заключали?
apache_dog 2022-06-27 14:12:55
Или может оплачиваете разработку? Если нет то жришодалли это самый справедливый вариант
fomkin 2022-06-27 14:13:18
apache_dog 2022-06-27 14:12:05
Я вообще не понимаю почему вы про опенсорс так говорите как будто вам что то должны

Я вообще-то ок с тем что либа говно. Просто мне не понятно почему ее используют и рекомендуют.

vnikita 2022-06-27 14:13:18
apache_dog 2022-06-27 14:12:05
Я вообще не понимаю почему вы про опенсорс так говорите как будто вам что то должны

Я вообще не понимаю почему мы обязаны контракт с опенсурсом заключать чтобы получить право его обсирать

vnikita 2022-06-27 14:13:21
Хочу и обсираю
apache_dog 2022-06-27 14:14:15
fomkin 2022-06-27 14:13:18
Я вообще-то ок с тем что либа говно. Просто мне не понятно почему ее используют и рекомендуют.

Потому что она простая и не требует вымучивания тонны непонятной аыдумки от аккаписателей с их «идиоматичными абстракциями»

fomkin 2022-06-27 14:14:56
apache_dog 2022-06-27 14:14:15
Потому что она простая и не требует вымучивания тонны непонятной аыдумки от аккаписателей с их «идиоматичными абстракциями»

Она простая? Ты внутрь заглядывал?

fomkin 2022-06-27 14:15:49
Там черт ногу сломит. Что в самой хттп4с что в блэйзе
apache_dog 2022-06-27 14:16:04
fomkin 2022-06-27 14:14:56
Она простая? Ты внутрь заглядывал?

А ты внутрь акки заглядывал? Там все ещё хуже

|