问题标签 [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.
scala - 如何将可取消订阅转换为 Cat 的 IO
在我的一个项目中,我必须使用基于回调的异步 API。我想介绍一下cats IO
,但我遇到了一些麻烦:
它看起来很不错,但是我也需要unsubscribe
在收到消息后。不幸IO {subscription.unsubscribe()}
的是,仅在取消的情况下进行评估。我可以快速解决,但这似乎非常违反直觉:
我检查了猫效果文档,遗憾的是我没有找到任何可以帮助我解决这个问题的东西。我可以为这个问题想出一些防弹的解决方案,但它看起来很典型,我不敢相信它还没有解决。
有没有简单的方法来实现这种资源释放行为cats
?
scala - `F[Something[F]]` 背后的意图是什么?
我看到很多F[Request[F]]
,F[Monitor[F]]
和F[Something[F]]
周围。尽管我了解如何处理此问题的机制,但我无法直观地理解为什么某些效果 ( F
) 应该像这样出现(既环绕Something
又出现在里面Something
)。洞察力?
scala - 如何将 `List[IO[Unit]]` 转换为 `Stream[IO,Unit]`
我有一个List[IO[Unit]]
由IO
. 我想把它转换成Stream[IO,Unit]
目前,我所做的是这个
有没有更好的办法?
scala - 指定 IO[Float] scala 的位数
我想读取一个浮点数,检查用户提供的类型,确定固定为两位数的位数。为了这 :
我已经实现了这三个功能。第一个从控制台读取输入:
检查输入是否为 Float 的另一个函数:
第三个检查位数:
该函数需要一个浮点数,但我有 IO [浮点数]。我不知道如何解开提供的值以检查是否给出了 2 位数字。我怎样才能解决这个问题
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 ?
scala-cats - 了解猫的效果`Cancelable`
我试图了解猫效应是如何Cancelable
运作的。根据文档,我有以下最小应用程序
当我运行这个:
程序此时就挂起。我有很多问题:
- 为什么程序在 1 秒后挂起而不是终止?
- 我们为什么要设置
mayInterruptIfRunning = false
?取消的全部目的不是中断正在运行的任务吗? - 这是定义的推荐方法
ScheduledExecutorService
吗?我没有在文档中看到示例。 - 该程序等待 1 秒,然后返回
()
(然后意外挂起)。如果我想退回其他东西怎么办?例如,假设我想返回一个字符串,这是一些长时间运行的计算的结果。我将如何从中提取该值IO.cancelable
?似乎困难在于IO.cancelable
返回取消操作,而不是要取消的进程的返回值。
请原谅这篇长文,但这是我的build.sbt
:
scala - 无法为用户类型构造读取实例。在 Scala 中对 Doobie 的类型误解
我正在尝试使用 doobie、http4s 和猫从数据库中返回用户记录。我一直被类型系统所阻碍,它根据以下代码提供以下错误:
路由器:
模型:
错误:
如果我将行更改为 ConnectionIO[Option[User] 到 ConnectionIO[Option[Unit]] 它会编译并运行,但会从 cat 库中返回一个 Free(...) 对象,我无法弄清楚如何解析,我不明白为什么我不能返回我的案例类!
另请参阅 findBy 和 findById 方法的类型声明。在我添加之前,有一个编译错误说它找到了一个用户,但需要一个读取 [用户]。我尝试将相同的类型声明应用于路由器中 findById 的调用,但它给出了上面提供的相同错误。
提前感谢您的帮助,请耐心等待我的无知。我从来没有遇到过比我更聪明的类型系统!
scala - 日志 Cats.Effect.IO 缺少隐式
我正在尝试使用 redis4cats 库运行这个简单的示例:
我在构建定义中添加了以下内容:
libraryDependencies += "dev.profunktor" %% "redis4cats-effects" % 版本 libraryDependencies += "dev.profunktor" %% "redis4cats-log4cats" % 版本
其中版本为 0.10.0-RC2
但是当我编译时,我得到:
我在这里想念什么?这直接来自这里的自述文件
postgresql - Doobie 在通用上下文 F 的事务中运行多个效果 f1 和 f2?
我想运行两个效果 f1 和 f2 更新两个不同的数据库表 t1 和 t2,同时保持在通用 F 上下文中。
}
}
我尝试了以下无法编译的方法:
我收到以下错误:
PS:我想在单个事务和通用 F 上下文中运行这两种效果。我知道将 Connection[IO[]] 用于 F 时的解决方案。但如果可能的话,需要一个解决方案,同时保留在通用 F 上下文中。谢谢
scala - 了解cats.effect.Concurrent关于取消
鉴于:
构建.sbt
src/main/scala/net/Main.scala
运行它会显示以下输出:
请注意,大约 30 秒后,我取消了它。
为什么没有"seconds done :
打印出来:
?