Вопросы по теме 'scala-cats'
Как библиотека Cats в Scala связана со скалязами?
Как библиотека Cats соотносится с scalaz ? В проекте Cats упоминается, что он произошел от скаляза.
6875 просмотров
schedule
16.11.2022
Что это ? тип?
Я пытаюсь реализовать экземплярcats Monad для типа с несколькими параметрами типа. Я посмотрел экземпляр Either котов, чтобы посмотреть, как это там сделано. Часть кода экземпляра Either Monad от котов скопирована ниже:
import...
370 просмотров
schedule
06.05.2023
Монады VS Аппликативные функторы для фьючерсов
Предположим, я хочу агрегировать данные из двух удаленных служб и обслуживать ответ как можно быстрее:
def loadUser: Future[User]
def loadData: Future[Data]
case class Payload(user: User, data: Data)
Я понимаю, что этот последовательно...
1533 просмотров
schedule
06.05.2022
Как преобразовать дизъюнкции будущего в будущее дизъюнкции
У меня есть результат метода: val res: Future[Int] Xor Future[String] = getResult(x)
и хотел бы преобразовать его и использовать как Future[Int Xor String]
Я не смог экстраполировать свой вариант использования из блога пастушьих кошек и я...
961 просмотров
schedule
23.07.2023
Найти первый определенный элемент в коллекции в Scala
Учитывая коллекцию coll: C[A] и функцию f: A => Option[B] , каков идиоматический способ в Scala получить первый элемент в coll , для которого определено f , без оценки всей коллекции?
Вот моя предполагаемая подпись:
def...
245 просмотров
schedule
07.08.2022
Как сложить коллекцию эндоморфизмов с кошками
Учитывая функцию
def f(i: I) : S => S
Я хотел бы написать довольно распространенный комбинатор g
def g(is : Seq[I], init: S) : S
Простая реализация использует только классический Scala
def g(is : Seq[I], init: S) : S =...
434 просмотров
schedule
11.03.2023
значение |@| не является членом группыcats.data.Validated
Когда я использую кошек 0.9.0, я могу легко сделать
import cats.data.Validated
import cats.data.Validated._
import cats.syntax.all._
import cats.implicits._
val x = Validated.valid[List[String], Int](10)
val y = Validated.valid[List[String],...
614 просмотров
schedule
22.09.2022
Как присвоить Future [Option [Int]] OptionT [Future, Int]
Я создал этот простой преобразователь монад
type FutureOptionInt = OptionT[Future, Int]
теперь я могу легко создать экземпляр этого с помощью
1.pure[FutureOptionInt]
это хорошо. но у меня есть другая функция, которая возвращает мне...
86 просмотров
schedule
20.05.2022
Как сделать его монадой?
Я пытаюсь последовательно проверить список строк и определить тип результата проверки следующим образом:
import cats._, cats.data._, cats.implicits._
case class ValidationError(msg: String)
type ValidationResult[A] =...
78 просмотров
schedule
10.03.2023
Цепочка кошек, подтвержденная с помощью andThen
Я читаю эту статью
http://typelevel.org/cats/datatypes/validated.html
В нем говорится, что Validated можно использовать для последовательной проверки с использованием метода andThen. Это означает, что мы останавливаемся на первой ошибке и не...
691 просмотров
schedule
25.10.2022
Пример Kleisli в Cats для Scala не работает
Я пробую следующий пример на рабочем листе Scala:
import cats._, cats.data._, cats.implicits._
val f = Kleisli { (x: Int) => (x + 1).some }
val g = Kleisli { (x: Int) => (x * 100).some }
Однако он не печатает проверку, ошибка, которую...
459 просмотров
schedule
10.11.2022
Как я могу реорганизовать это, чтобы использовать преобразователи Monad и для понимания?
Как я могу реорганизовать этот код, чтобы использовать коты DoesT, ReaderT(?) и Future, чтобы я мог избавиться от вложенности и написать его в стиле для понимания?
import scala.concurrent.Future
trait Foo[A, B, C, D, E] {
def bar(f: A =>...
84 просмотров
schedule
28.05.2024
Кошки: метод tailRecM без хвостовой рекурсии для монад
В cats , когда монада создается с использованием признака Monad , должна быть предоставлена реализация метода tailRecM .
У меня есть сценарий ниже, который я обнаружил невозможным для хвостовой рекурсивной реализации tailRecM
sealed...
1373 просмотров
schedule
24.11.2022
Scala: как использовать функторы для типажей параметров нескольких типов
У меня есть и ADT, который в основном является оболочкой над Function1 :
case class Abstract[M[_], A, B](f:M[A] => M[B]) {
def fn: M[A] => M[B] = { case x: M[A] => f(x) }
}
Я хочу отобразить их, поэтому я определил Functor...
469 просмотров
schedule
17.07.2022
монада трансформеры в кошках scala
Я пытаюсь изучить библиотеку кошек scala. Так что я совершенно не знаком с функциональным программированием.
Пожалуйста, помогите мне извлечь значение из приведенного ниже примера функции:
import cats._
import cats.data._
import cats.syntax._...
271 просмотров
schedule
04.07.2023
Декартовский построитель для OptionT
Я хочу присоединиться к 2 Future[Option[_]] :
def foo: Future[Option[Int]] = ???
def baz: Future[Option[Int]] = ???
Можно присоединиться к паре Future :
foo |@| baz map( (fooOpt, bazOpt) => ???)
И можно присоединиться к паре...
145 просмотров
schedule
03.11.2023
Монада Ничего не работает у кошек
У меня проблемы с cats / monads /пониманием. Пожалуйста, рассмотрите следующий фрагмент:
import cats._
import cats.implicits._
final case class My[T]()
implicit val monadMy: Monad[My] = new Monad[My] { ... }
// this compiles
def test11[A,...
247 просмотров
schedule
27.10.2022
Список Клейсли в Клейсли списка
Мне было интересно, есть ли способ превратить List[Kleisli[Option, Int, Int]] в Kleisli[Option, Int, List[Int]] .
В частности, у меня есть список клейсли, составленный следующим образом:
def k(a: String) = Kleisli[Option, Int, Int](m =>...
292 просмотров
schedule
20.05.2022
Вызов универсальной функции с помощью Functor с использованием подкласса (cats / scalaz)
Я возился с некоторыми базовыми примерами Cats / Scalaz, а также просматривал учебные пособия, чтобы почувствовать себя, и наткнулся на случай, который, я уверен, есть решение.
Можно ли вызвать обобщенную функцию, которая принимает контекстное...
279 просмотров
schedule
21.07.2023
Использование функции сдвига из эффекта кошки
Я пытаюсь использовать функцию сдвига эффекта кошек для асинхронного запуска кода.
Реализация функции:
def asyncSendMsg(producer: KkProducer)(record: KkRecord) : IO[Either[String, RecordMetadata]] =
for {
res <-...
623 просмотров
schedule
26.05.2022