Вопросы по теме 'scala-cats'
Бесплатная монада - неявное внедрение с вложенным сопродуктом с использованием кошек
Скажем, у меня есть три DSL, которые я хочу использовать:
sealed trait Test1Op[A]
sealed trait Test2Op[A]
sealed trait Test3Op[A]
object Test1Op {
case class Test1() extends Test1Op[String]
}
object Test2Op {
case class Test2() extends...
398 просмотров
schedule
18.04.2024
Практические бесплатные монады для системных тестов DSL: параллелизм и обработка ошибок
Я пытаюсь написать DSL для написания системных тестов в Scala. В этом DSL я не хочу раскрывать тот факт, что некоторые операции могут выполняться асинхронно (поскольку они реализованы, например, с использованием тестируемого веб-сервиса) или что...
484 просмотров
schedule
02.12.2022
Стекирование бесплатных монад
Я изучаю монады Free и собрал простой пример на Scala, где я использую их для определения двух предметно-ориентированных языков.
Первая монада имеет дело с побочными эффектами репозитория. Я реализовал интерпретатор, который использует монаду...
141 просмотров
schedule
05.12.2022
Экземпляр моноида для A => A в Cats
Функции A => A являются моноидами с identity как empty и композицией как combine . К сожалению, я не нашел его в cats библиотеке. Предоставляет ли библиотека экземпляр моноида для этих функций?
Как насчет A => M[A] , где M...
212 просмотров
schedule
17.09.2022
Почему проверка нарушает законы монад?
В SO дается объяснение, почему проверка, как в скалязе, кошки (Scala) или Arrow (Kotlin) не могут быть монадой.
Насколько я понимаю, это потому, что они смоделировали монады в терминах аппликативных функторов, и желаемое поведение валидации как...
286 просмотров
schedule
10.11.2022
Какова цель использования [T: Type] у кошек?
Я учусь использовать библиотеку кошек Scala. Довольно часто я вижу такое определение, как
implicit def validatedApplicative[E : Semigroup]: Applicative[Validated[E, ?]] = ???
def parallelValidate[E : Semigroup, A, B, C](v1: Validated[E, A], v2:...
64 просмотров
schedule
08.04.2024
Scala, коты - как не использовать Applicative[F] явно?
Я хотел бы использовать Applicative[F] как-то иначе, чем явно. В настоящее время у меня есть простой код:
class BettingServiceMock[F[_] : Async] extends BettingService[F] {
override def put(bet: Bet): F[Bet] = {
for {...
87 просмотров
schedule
30.09.2022
Для понимания неполного составления шагов в модульном тесте с использованием Reader
У меня есть окончательная реализация без тегов с модульным тестом, когда я запускаю модульный тест, вызывается только первый шаг, а не остальные.
Вот цель теста:
class NameThing[F[_]: Monad](implicit console: Console[F]) {
def program:...
77 просмотров
schedule
09.02.2024
fs2 Stream scala Нет неявного типа: Stream.Compiler[Eval,G_]
Я пытаюсь создать Stream[Eval, String] следующим образом:
import cats.Eval
import cats.effect.{ExitCode, IO, IOApp}
import fs2._
object StringEval extends IOApp {
def evalString: Eval[String] = Eval.always{
val r = new...
170 просмотров
schedule
24.01.2024
Можно ли разделить чистое состояние FP между несколькими HTTP-запросами на сервере http4s?
Я пытаюсь разделить состояние между несколькими HTTP-запросами на http4s сервере.
Вот что я пробовал:
for {
state <- Ref[F].of(0)
_ <- BlazeServerBuilder[F]
.bindHttp(port, host)
.withHttpApp( ... httpApp...
147 просмотров
schedule
07.02.2024
Изменение типа эффекта fs2.Stream
Я использую doobie, который может создавать fs2.Stream[ConnectionIO, Int] строк базы данных ( Int в моем случае). ConnectionIO[A] - это внутренний тип doobie.
Учитывая HKT F[_] и val nt: ConnectionIO ~> F , есть ли способ получить...
186 просмотров
schedule
05.11.2023
Различные монады для понимания
У меня есть код ниже
def processInfoAndReturnResponse(input: Input]): EitherT[Future, CustomException, A] = ???
def sendMessage(message: A): monix.eval.Task[Boolean] = ???
def anotherMethod(message: Input): Future[Either[CustomException, Unit]]=...
136 просмотров
schedule
25.12.2023
Что на самом деле делает функция IO.suspend в Cats Effect?
Что делает "кошачий эффект" IO.suspend и почему он полезен? Документация есть, но она не совсем ясна.
В документации описан следующий вариант использования:
import cats.effect.IO
def fib(n: Int, a: Long, b: Long): IO[Long] =
IO.suspend {...
162 просмотров
schedule
25.10.2022
Использование свободной монады в функциональном проектировании предметной области
Я новичок в функциональном программировании. Тем не менее, я читал о Free Monad, и я пытаюсь использовать его в игрушечном проекте. В этом проекте я моделирую область портфеля акций. Как предлагалось во многих книгах, я определил алгебру для...
136 просмотров
schedule
06.02.2024
Scala Doobie не вставляет значения в базу данных
Мой код для вставки значений:
def insert(link: entity.Link) : IO[Int] = {
logger.info("Inserting link: " + link.toString())
sql"insert into links (title,url,publication_date,feed_id) values...
61 просмотров
schedule
24.03.2024