Size: a a a

Scala User Group

2020 September 11

VS

Vladimir Sam in Scala User Group
у меня это будет на конце мира происходить, ZIO финальный зафиксированный тип
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vladimir Sam
у меня это будет на конце мира происходить, ZIO финальный зафиксированный тип
zio.interop.catz._



liftIO(cio).orDie.absolve
источник

VS

Vladimir Sam in Scala User Group
def unlift[F[_]: ConcurrentEffect, A, E1, E2](
     fa: F[Either[E1, A]],
     domainErrMap: E1 => E2,
     unexpectedErrMap: Throwable => E2): ZIO[Any, E2, A] =
   Task
     .concurrentEffectWith[Throwable, Either[E1, A]](_.liftIO(fa.toIO))
     .mapError(unexpectedErrMap)
     .flatMap(eitherResult => ZIO.fromEither(eitherResult.leftMap(domainErrMap)))


выдавил вот такое
источник

VS

Vladimir Sam in Scala User Group
у меня не вполне общий кейс: zio grpc требует, чтобы имплементация возвращала ZIO[Any, Status, T]
источник

VS

Vladimir Sam in Scala User Group
grpc Status в целом может проглотить любую какаху, которую в него суют, включая Status.fromThrowable
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ты Throwable потом и после orDie, можешь поймать через catchAllCause
источник

VS

Vladimir Sam in Scala User Group
спасибо, надо подольше над этим помедитировать
источник

Ж

Жмака in Scala User Group
Привет. Как можно в скале написать функцию с одним дженерик типом так чтобы на выходе была возможность дать два разных типа, потому что внутри функции pattern matching? Например инпут dataset[x] , а output может быть dataset[y] или dataset[z]
источник

VS

Vladimir Sam in Scala User Group
если всего два на выходе, можно использовать Either

def convert[A, B, C](a: A): Either[B, C]
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Жмака
Привет. Как можно в скале написать функцию с одним дженерик типом так чтобы на выходе была возможность дать два разных типа, потому что внутри функции pattern matching? Например инпут dataset[x] , а output может быть dataset[y] или dataset[z]
скасти
источник

Ж

Жмака in Scala User Group
Oleg ℕizhnik
скасти
источник

Ж

Жмака in Scala User Group
Vladimir Sam
если всего два на выходе, можно использовать Either

def convert[A, B, C](a: A): Either[B, C]
А если больше двух, то either тоже поможет?
источник

VS

Vladimir Sam in Scala User Group
если больше то либо вложенные eitherы, либо (G)ADT (sealed traitы для начала), либо shapeless Coproduct
источник

Ж

Жмака in Scala User Group
Vladimir Sam
если всего два на выходе, можно использовать Either

def convert[A, B, C](a: A): Either[B, C]
Ругается что type mismatch. Required Either...
источник

Oℕ

Oleg ℕizhnik in Scala User Group
а минимализированный скасти?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
этот даже не компилится
источник

Oℕ

Oleg ℕizhnik in Scala User Group
можно через завметод сделать
источник

Ж

Жмака in Scala User Group
Oleg ℕizhnik
этот даже не компилится
источник

Ж

Жмака in Scala User Group
Оставил только то что нужно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну не компилится же
источник