Size: a a a

Scala User Group

2020 February 21

KS

Kirill Shelopugin in Scala User Group
Что "кроме cats"? Какие библиотеки нужны?
источник

ΛO

Λrtem Ohanjanyan in Scala User Group
из библиотек есть ещё Monix, он тоже де-факто стандарт?
источник

ΛO

Λrtem Ohanjanyan in Scala User Group
не из библиотек ещё интересно про подходы к использованию всего этого добра
источник

IA

Ivan Aristov in Scala User Group
Tf, free monad?
источник

KS

Kirill Shelopugin in Scala User Group
Monix - это реализация IO монады + стримы, предоставляет инстансы для cats-effect, так что имеет смысл использовать cats-effect, абстрагируясь по типу эффекта F, чтобы можно было использовать любую реализацию, предоставляющую инстансы - monix/IO из cats-effect/zio
источник

KS

Kirill Shelopugin in Scala User Group
Ещё лучше - использовать тофу, который также предоставляет инстансы для Task/ZIO/IO
источник

λ

λoλdog in Scala User Group
Kirill Shelopugin
Ещё лучше - использовать тофу, который также предоставляет инстансы для Task/ZIO/IO
ай красава
источник

KS

Kirill Shelopugin in Scala User Group
Λrtem Ohanjanyan
не из библиотек ещё интересно про подходы к использованию всего этого добра
Самый хот топик это tagless final сейчас, если говорить про подходы и структурирование программ
источник

KS

Kirill Shelopugin in Scala User Group
Здесь однозначно tofu фаворит
источник

DM

Daniel Matveev in Scala User Group
@kshelopugin а ты пробовал дистейдж?
источник

KS

Kirill Shelopugin in Scala User Group
Хотел, но меня смутила поддержка
источник

AT

Aλeksei Tereχin in Scala User Group
Kirill Shelopugin
По настроению. Кому-то нравится писать f.whenA, кому-то нравится писать Applicative[F].whenA, я не могу ни того ни другого осуждать
Хреновый пример. Тут экстеншн метод не ленивый. Лучше всегда писать длинную версию. На всякий.
источник

ΛO

Λrtem Ohanjanyan in Scala User Group
Kirill Shelopugin
Самый хот топик это tagless final сейчас, если говорить про подходы и структурирование программ
Это когда эффекты объединяются в тайпкласы, на которых пишутся все функции?
источник

KS

Kirill Shelopugin in Scala User Group
Aλeksei Tereχin
Хреновый пример. Тут экстеншн метод не ленивый. Лучше всегда писать длинную версию. На всякий.
Почему он хреновый? При использовании ленивых IO он ничем не будет отличаться
источник

KS

Kirill Shelopugin in Scala User Group
Ну ок, будет отличаться на сам факт наличия вызова функции, которая создаёт вычисление
источник

KS

Kirill Shelopugin in Scala User Group
Единственный профит от этого, который я до сих пор видел - использование в тестах фреймворков типо мокито, которые проверяют факт наличия либо отсутствие вызова метода, но это пример не из лучших
источник

ΛO

Λrtem Ohanjanyan in Scala User Group
Oleg ℕizhnik
ну прямо так сделать будет не очень хорошо. основная причина - вывод типов
у скалы почти никогда не получается вывести здесь тип
поэтому приходится писать x.pure[F]
в случае функции пришлось бы писать
pure[F, XType](x), т.к. частичной передачи нет
но можно воспользоваться паттерном для частичной передачи
Кстати, в 2.13 это не пофиксили?
источник

AT

Aλeksei Tereχin in Scala User Group
Kirill Shelopugin
Единственный профит от этого, который я до сих пор видел - использование в тестах фреймворков типо мокито, которые проверяют факт наличия либо отсутствие вызова метода, но это пример не из лучших
Не тебе меня судить, а прокурору
источник

KS

Kirill Shelopugin in Scala User Group
Λrtem Ohanjanyan
Это когда эффекты объединяются в тайпкласы, на которых пишутся все функции?
Это когда программа описывается в терминах подъязыка, который описывается набором тайпклассов. В последнем выпуске скалалаза Олег очень здорово рассказал про это
источник

KS

Kirill Shelopugin in Scala User Group
Aλeksei Tereχin
Не тебе меня судить, а прокурору
Так какие профиты ещё?
источник