问题标签 [cats-effect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
130 浏览

scala - 如何将可取消订阅转换为 Cat 的 IO

在我的一个项目中,我必须使用基于回调的异步 API。我想介绍一下cats IO,但我遇到了一些麻烦:

它看起来很不错,但是我也需要unsubscribe在收到消息后。不幸IO {subscription.unsubscribe()}的是,仅在取消的情况下进行评估。我可以快速解决,但这似乎非常违反直觉:

我检查了猫效果文档,遗憾的是我没有找到任何可以帮助我解决这个问题的东西。我可以为这个问题想出一些防弹的解决方案,但它看起来很典型,我不敢相信它还没有解决。

有没有简单的方法来实现这种资源释放行为cats

0 投票
2 回答
200 浏览

scala - `F[Something[F]]` 背后的意图是什么?

我看到很多F[Request[F]]F[Monitor[F]]F[Something[F]]周围。尽管我了解如何处理此问题的机制,但我无法直观地理解为什么某些效果 ( F) 应该像这样出现(既环绕Something又出现在里面Something)。洞察力?

0 投票
2 回答
351 浏览

scala - 如何将 `List[IO[Unit]]` 转换为 `Stream[IO,Unit]`

我有一个List[IO[Unit]]IO. 我想把它转换成Stream[IO,Unit]

目前,我所做的是这个

有没有更好的办法?

0 投票
0 回答
62 浏览

scala - 指定 IO[Float] scala 的位数

我想读取一个浮点数,检查用户提供的类型,确定固定为两位数的位数。为了这 :

我已经实现了这三个功能。第一个从控制台读取输入:

检查输入是否为 Float 的另一个函数:

第三个检查位数:

该函数需要一个浮点数,但我有 IO [浮点数]。我不知道如何解开提供的值以检查是否给出了 2 位数字。我怎样才能解决这个问题

0 投票
1 回答
671 浏览

scala - Where to use `ApplicativeError` instead of `Either`?

There is ApplicativeError[F,E] + F[A] and there is Either[E, A]. Both convey the message that the function could fail with an E or succeed with an A but I'm not sure about the different message they convey to the client about the intended way of handling the error :

I understand f1 means: client is responsible for error handling. But what does f2 mean to the client about how to handle the error ?

0 投票
3 回答
747 浏览

scala-cats - 了解猫的效果`Cancelable`

我试图了解猫效应是如何Cancelable运作的。根据文档,我有以下最小应用程序

当我运行这个:

程序此时就挂起。我有很多问题:

  1. 为什么程序在 1 秒后挂起而不是终止?
  2. 我们为什么要设置mayInterruptIfRunning = false?取消的全部目的不是中断正在运行的任务吗?
  3. 这是定义的推荐方法ScheduledExecutorService吗?我没有在文档中看到示例。
  4. 该程序等待 1 秒,然后返回()(然后意外挂起)。如果我想退回其他东西怎么办?例如,假设我想返回一个字符串,这是一些长时间运行的计算的结果。我将如何从中提取该值IO.cancelable?似乎困难在于IO.cancelable返回取消操作,而不是要取消的进程的返回值。

请原谅这篇长文,但这是我的build.sbt

0 投票
1 回答
709 浏览

scala - 无法为用户类型构造读取实例。在 Scala 中对 Doobie 的类型误解

我正在尝试使用 doobie、http4s 和猫从数据库中返回用户记录。我一直被类型系统所阻碍,它根据以下代码提供以下错误:

路由器:

模型:

错误:

如果我将行更改为 ConnectionIO[Option[User] 到 ConnectionIO[Option[Unit]] 它会编译并运行,但会从 cat 库中返回一个 Free(...) 对象,我无法弄清楚如何解析,我不明白为什么我不能返回我的案例类!

另请参阅 findBy 和 findById 方法的类型声明。在我添加之前,有一个编译错误说它找到了一个用户,但需要一个读取 [用户]。我尝试将相同的类型声明应用于路由器中 findById 的调用,但它给出了上面提供的相同错误。

提前感谢您的帮助,请耐心等待我的无知。我从来没有遇到过比我更聪明的类型系统!

0 投票
1 回答
154 浏览

scala - 日志 Cats.Effect.IO 缺少隐式

我正在尝试使用 redis4cats 库运行这个简单的示例:

我在构建定义中添加了以下内容:

libraryDependencies += "dev.profunktor" %% "redis4cats-effects" % 版本 libraryDependencies += "dev.profunktor" %% "redis4cats-log4cats" % 版本

其中版本为 0.10.0-RC2

但是当我编译时,我得到:

我在这里想念什么?这直接来自这里的自述文件

https://redis4cats.profunktor.dev/

0 投票
1 回答
380 浏览

postgresql - Doobie 在通用上下文 F 的事务中运行多个效果 f1 和 f2?

我想运行两个效果 f1 和 f2 更新两个不同的数据库表 t1 和 t2,同时保持在通用 F 上下文中。

}

}

我尝试了以下无法编译的方法:

我收到以下错误:

PS:我想在单个事务和通用 F 上下文中运行这两种效果。我知道将 Connection[IO[]] 用于 F 时的解决方案。但如果可能的话,需要一个解决方案,同时保留在通用 F 上下文中。谢谢

0 投票
1 回答
460 浏览

scala - 了解cats.effect.Concurrent关于取消

鉴于:

构建.sbt

src/main/scala/net/Main.scala

运行它会显示以下输出:

请注意,大约 30 秒后,我取消了它。

为什么没有"seconds done :打印出来:

?