Size: a a a

Scala User Group

2021 September 22

ЮБ

Юрий Бадальянц... in Scala User Group
Нужно видать добавить какой-нибудь liftOrElseF в тофу
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
прс ар велкам
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Да я чё, первый раз чтоли
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
работает
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
def foo[F[_]: MonadThrow, A](opt: Option[A])(default: F[A]): F[A] =
 opt.pure.getOrElseF(default)
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
def getOrElseF[B >: A](fa: => F[B])(implicit F: Monad[F]): F[B] =
 lhs.flatMap(_.fold(fa)(F.pure))
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Так будет, но Олег то другое скинул
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
ну какая разница
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
работает ж
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Ну да, так прилично выглядит
источник

Oℕ

Oleg ℕizhnik in Scala User Group
да, мне тоже такого синтаксиса недавно не хватило, написал opt.pure[F].getOrElseF(default), но думаю добавить метод
источник

Oℕ

Oleg ℕizhnik in Scala User Group
я подумал, что это такая наномелочь, и в принципе этот код хорошо читается
источник

NK

Nikita Kozlovskii in Scala User Group
Доброе утро, может кто знает, где реализовано что-то подобное?
def zip[E,A](a: Either[E,A], b:Either[E,A]): Either[Seq[E], (A,A)] = ???
источник

SA

Sergey Alaev in Scala User Group
Возможно, ValidatedNec из котов будет лучшим решением.
источник

NK

Nikita Kozlovskii in Scala User Group
спасибо, пойду посмотрю
источник

В

Влад in Scala User Group
import cats.implicits._

val e1: Either[String, Int] = Left("hello")
val e2: Either[String, Int] = Left("world")

(e1, e2).parTupled


Сработает, только если E у айзера — моноид
источник

IV

Ivan Vishnyak in Scala User Group
Всем привет!
Коллеги, может кто-то сталкивался при использовании fs2.kafka с ошибкой
InvalidPidMappingException: The producer attempted to use a producer id which is not currently assigned to its transactional id.

На хабре\medium (https://medium.com/its-tinkoff/why-did-we-choose-kafka-27df18abed1a) с Тинька писали что нужно просто обработать этот Exception и переотправить сообщение.

Я просто пытаюсь вновь вызвать ту же функцию при получении этой ошибки и это зацикливает до бесконечности
источник

IV

Ivan Vishnyak in Scala User Group
withProducer { (producer, blocking) =>
         blocking(producer.beginTransaction())
           .bracketCase { _ =>
             records.records
               .traverse(KafkaProducer.produceRecord(keySerializer, valueSerializer, producer))
               .map(_.sequence)
           } {
             case (_, ExitCase.Completed) =>
               blocking(producer.commitTransaction())
             case (_, ExitCase.Canceled | ExitCase.Error(_)) =>
               blocking(producer.abortTransaction())
           }
       }.flatten
         .handleErrorWith { case e: KafkaException =>
           log.error(s"Error $e") *>
             produceTransaction(records)
         }
источник

IT

Igal Tabachnik in Scala User Group
Котаны, кто тут по шаплесу? Как можно рекурсивно получить список всех аннотаций?
У меня есть типа class Key(name: String) extends StaticAnnotation, и я аннотирую им данные:


case class Person(
 @Key("First Name") name: String,
 address: Address
)

case class Address(
 @Key("Street") street: String,
 @Key("City") city: String
)


Хочу через шапелесс зафлетмаппить список всех аннотаций и получить e.g. ["First Name", "Street", "City"], но у меня не получается 🙁
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Разве шейплес даёт возможность достать аннотации? Как пробудешь?
источник