问题标签 [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 回答
779 浏览

scala - Sequential execution of IO from Future

I have simple combinations of two IO with sending message to Telegram bot

def send:Future[Message] = request(SendMessage(chatID, msg))

How to combine IO in greeting to get output "second" after "first" every time. I tried to use *>, flatMap, IO.fromFuture but the result was different.

0 投票
2 回答
732 浏览

scala - 解析 Seq[Future[Either[A, Seq[B]]]] - Scala Cats

我在尝试解决方法的结果时遇到问题。更具体地说,我有:

def methodA(): Future[Either[Error, Seq[A]]]

在某些时候,我想为列表的每个元素调用此方法并合并结果。像这样的东西:

你知道我该如何解决Seq[Future[Either[Error, Seq[A]]]]吗?

所以我最终想要的是 Future[Either[Error, Seq[A]]]一个包含整个列表结果的序列。

0 投票
1 回答
72 浏览

scala - WebSocket 端点中的“Spawn”并发效果

我有以下代码:

createService是一个创建新服务的函数。创建新服务是一个非常复杂的过程,它涉及触发 CI 管道,等待它们完成,然后以相同的方式触发更多 CI 管道。它接收到的队列将用于向浏览器报告当前正在执行的操作。

我想同时“生成” createService 并让它运行直到完成。但是同时我想立即将 WebSocket 返回给客户端。Aka 我不能在“生成”createService 时阻止。

我被困住了。我只能考虑使用shift,但这意味着 for comprehension 中的下一行将阻止等待createService完成,然后将 websocket 返回给客户端。

我的方法错了吗?我究竟做错了什么?

0 投票
1 回答
149 浏览

scala - 使用 cat-effect 中的种族可防止应用退出

我有一个简单的猫效应应用程序,它从作为参数给出的 URL 下载站点。在下载应用程序期间,应该通过将点 ( .) 写入控制台来显示“加载栏”。我通过两个IO的竞赛来实现它,一个用于下载另一个用于显示点。

这是scastie上的整个应用程序。

最重要的部分在这里:

一切都按我的预期工作,当我运行它时,我得到:

............. 从https://www.scala-lang.org下载的站点。下载内容的大小为 47738。

唯一的问题是应用程序永远不会退出。

据我检查加载器 IO被正确取消。我什至可以添加如下内容:

???显示出来。

此外,当我删除race时,应用程序会正确退出。

所以我的问题是如何解决这个问题并让我的应用程序最终退出?

0 投票
2 回答
782 浏览

scala - 如何使用 IO monad 编写猫的理解力

我有以下代码:


这并不完全准确,但我发布了整个块来解释问题。
在这里,我对值进行了许多转换以产生 IO 并将其转换为 StateT。有没有更聪明的方法来做到这一点?也许我应该以某种方式将 io 任务与主要算法分开,即与这个理解分开?或者我应该这样做吗?

0 投票
2 回答
537 浏览

scala - 如何从猫状态创建猫 IO monad

我正在与猫一起工作,我想将我的转换val x: State[A, B]StateT[IO, A, B]. 注意:IO 来自于猫的效果。
如何优雅地做到这一点?

0 投票
1 回答
2198 浏览

scala - 理解 Scala FP 库

只是为了让那些想要开始使用 Scala FP 库的人快速清晰地了解如何在纯 FP 方面变得更好。

有人会澄清 Cats 和 Cats-Effect、Cats-Effects IO 之间的区别/关系吗?最重要的是,Zio 和 Monix 对此有何立场?最后,与 ScalaZ 7/8 有什么关系?

到目前为止,根据我所阅读的内容,基于可用文档的库的良好组合以及它们所做的将是 Cats,然后是 Cats-Effect 和可与 Cats-effects 一起使用的 ZIO?但我不太明白为什么,我想为自己设定一条好道路,让自己在保持生产力的同时学习成为更好的 FP 程序员,并且在开始做出选择之前不必完成“Scala 中的 FP 编程”。

0 投票
1 回答
471 浏览

scalaz - IO Monad 与 Reader Monad

我想知道 IO Monad 和 Reader monad 之间有什么关系吗?

Reader monad 中的 Environment 可以产生影响吗?如果是这样,ZIO 或 Cats IO,scalaz-effects 如何处理 Reader Monad 原则?

0 投票
1 回答
509 浏览

scala - Http4s 客户端/资源的集成测试

我正在使用 Http4s 客户端在 Scala 中实现一个Vault 客户端。

我现在开始编写集成测试。到目前为止,我有这个:

然后我的测试看起来像这样(只显示一个测试):

这种方法有效,但感觉不对。对于每个测试,我都打开连接 ( clientResource.use) 并重新创建VaultClient.

有没有办法让我为 SysSpec 中的所有测试重用相同的连接和客户端。

请注意,这些是集成测试,而不是单元测试。

0 投票
1 回答
650 浏览

fs2 - http4s 收到过早的 EOF

我想实现一个http4s服务器,它从另一个服务接收内容,处理它并返回响应。

原始服务使用重定向,所以我添加了Follow 重定向中间件。我还添加了 Logger 中间件来检查生成的日志。

服务的骨架是:

当我尝试使用 curl 访问服务时:

响应包含原始内容的第一部分,并以:

查看日志,它们包含以下行:

这表明接收过早的 EOF 时出错。

我在这个问题上找到了一个可能的答案:但答案建议使用不推荐使用的方法,如 tohttpService。

我想我需要使用流重写代码,但我不确定更惯用的方法是什么。一些建议?