Size: a a a

Scala User Group

2020 January 01

Oℕ

Oleg ℕizhnik in Scala User Group
Поэтому всё равно не сведутся к одному типу
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну ладно, напишете - покажете
источник

SA

Sergey Alaev in Scala User Group
Nikita Vilunov
С Новым годом Сергей
С наступившим. Но мысль все равно хотелось бы понять
источник

SA

Sergey Alaev in Scala User Group
Oleg ℕizhnik
Поэтому всё равно не сведутся к одному типу
ты про то, что Resource не поддерживает Concurrent? ну что поделаешь.
источник

SA

Sergey Alaev in Scala User Group
Но никто же не мешает написать свою монаду с семантикой ресурса, поддерживающую Parallel ценой отказа от cancellation?
источник

SA

Sergey Alaev in Scala User Group
т.к. кенселить иницализацию приложения - это что-то странное
источник

SA

Sergey Alaev in Scala User Group
Или вообще использовать ZIO, ты вроде упоминал, что он поддерживает семантику ресурса с Concurrent/Parallel
источник

IL

Ivan Lopatin in Scala User Group
Продолжаю приключения с member types - как теперь создать Circe Encoder/Decoder для такой sealed-иерархии? Автовывод ожидаемо не справился.

sealed abstract class Dialog {
 type State
 type Event

 def transition(event: E): Dialog { type State = this.State; type Event = this.Event }
}
источник

GP

Grigory Pomadchin in Scala User Group
Ivan Lopatin
Продолжаю приключения с member types - как теперь создать Circe Encoder/Decoder для такой sealed-иерархии? Автовывод ожидаемо не справился.

sealed abstract class Dialog {
 type State
 type Event

 def transition(event: E): Dialog { type State = this.State; type Event = this.Event }
}
Надо отдельно кодеки предоставлять для State и Event // или ты хочешь кодеки выбирать на основе тайп мемберов?; а что ты уже попробовал сделать? Или пытаешься сделать
источник

IL

Ivan Lopatin in Scala User Group
Grigory Pomadchin
Надо отдельно кодеки предоставлять для State и Event // или ты хочешь кодеки выбирать на основе тайп мемберов?; а что ты уже попробовал сделать? Или пытаешься сделать
Мне нужно, чтобы circe энкодил/декодил иерархию sealed классов с дискриминатором, без member types это работало просто через импорт io.circe.generic.extras.auto._. То есть просто вызывал parser.decode[Dialog] и Decoder дерайвился автоматом.

Пытался последовать советам в этом ответе на SO, но не очень понимаю, как это будет выглядеть для моих типов: https://stackoverflow.com/questions/36843532/deriving-circe-codec-for-a-sealed-case-class-family-where-base-trait-has-a-seal
sealed trait Inner
case class I1(i: Int) extends Inner
case class I2(s: String) extends Inner

sealed trait Base { type T <: Inner }
object Base {
 sealed trait Aux[S <: Inner] extends Base { type T = S }
 implicit val encoder: Encoder[Base] = {
   semiauto.deriveEncoder[Base.Aux[Inner]].asInstanceOf[Encoder[Base]]
 }
 implicit val decoder: Decoder[Base] = {
   semiauto.deriveDecoder[Base.Aux[Inner]].asInstanceOf[Decoder[Base]]
 }
}
источник

SA

Sergey Alaev in Scala User Group
https://scastie.scala-lang.org/ef6qirJASxipe6WMNrZbWA
Просто показалось забавным
источник

GP

Grigory Pomadchin in Scala User Group
думаю тут в парсинге / порядке вычисления дело, если иф в фигурные скобки возьмешь должно заработать
источник

SA

Sergey Alaev in Scala User Group
Grigory Pomadchin
думаю тут в парсинге / порядке вычисления дело, если иф в фигурные скобки возьмешь должно заработать
с круглыми тоже работает. Просто немного inconsistent.
источник

VC

Vadim ChelyshOv in Scala User Group
/stat@combot
источник

C

Combot in Scala User Group
источник
2020 January 02

VH

Vitalii Honta in Scala User Group
Ivan Lopatin
Мне нужно, чтобы circe энкодил/декодил иерархию sealed классов с дискриминатором, без member types это работало просто через импорт io.circe.generic.extras.auto._. То есть просто вызывал parser.decode[Dialog] и Decoder дерайвился автоматом.

Пытался последовать советам в этом ответе на SO, но не очень понимаю, как это будет выглядеть для моих типов: https://stackoverflow.com/questions/36843532/deriving-circe-codec-for-a-sealed-case-class-family-where-base-trait-has-a-seal
sealed trait Inner
case class I1(i: Int) extends Inner
case class I2(s: String) extends Inner

sealed trait Base { type T <: Inner }
object Base {
 sealed trait Aux[S <: Inner] extends Base { type T = S }
 implicit val encoder: Encoder[Base] = {
   semiauto.deriveEncoder[Base.Aux[Inner]].asInstanceOf[Encoder[Base]]
 }
 implicit val decoder: Decoder[Base] = {
   semiauto.deriveDecoder[Base.Aux[Inner]].asInstanceOf[Decoder[Base]]
 }
}
Кинь в личку пример
источник

GP

Grigory Pomadchin in Scala User Group
Vitalii Honta
Кинь в личку пример
Сюда можно, зачем в личку)
источник

GP

Grigory Pomadchin in Scala User Group
В скасти пример что бы компилился / не компилился
источник

VH

Vitalii Honta in Scala User Group
Grigory Pomadchin
Сюда можно, зачем в личку)
Ну коллегам по команде проще в слаке перетереть 😅
А ответ то да, можно и сюда
источник

NV

Nikita Vilunov in Scala User Group
Друзья, а есть что-то для бинарной [де]сериализации структур для fs2-стримов?
источник