27得票1回答
理解Scala函数式编程库

为了方便想开始使用Scala FP库,成为更好的纯FP开发者的人快速了解,请有人澄清一下Cats和Cats-Effect、Cats-Effects IO之间的区别/关系。此外,Zio和Monix在其中的地位如何?最后,ScalaZ 7/8与之的关系是什么? 就目前我所读到的内容而言,根据可用...

26得票1回答
Cats-effect和异步IO的特点

最近我一直在琢磨cats-effect和IO,但我觉得自己对这个effect有些误解,或者说我没有理解它的重点。 首先,如果IO能够替代Scala的Future,那么我们如何创建一个异步IO任务呢?使用 IO.shift?使用 IO.async?IO.delay是同步还是异步的?我们能否使...

18得票1回答
如何在单子内工作时编写尾递归函数

总的来说,当我在monads中进行编写时,我往往会遇到编写尾递归函数的问题。以下是一个快速示例: 这来自于我正在编写的一个小型示例应用程序,以更好地理解Scala中的FP。首先,用户被提示输入由7个 Player 组成的 Team 。该函数递归读取输入:import cats.effect....

13得票1回答
Cats effect - 独立效应的并行组合

我想将多个IO值组合在一起,在并行独立运行。val io1: IO[Int] = ??? val io2: IO[Int] = ??? 我认为我有两个选择: 使用cats-effect的fibers和fork-join模式 val parallelSum1: IO[Int] = for ...

13得票2回答
如何在Cats Effect 3中测试虚拟时间的流逝?

我正在尝试将Mules转换为Cats Effect 3 (CE3)。由于它是一个缓存库,在测试中需要(虚拟)时间来测试项目是否会过期。目前,它在相当大程度上使用cats.effect.laws.util.TestContext,该工具允许通过tick推进虚拟时钟而不实际休眠。据我所知,Test...

12得票2回答
cats-effect:如何将Map[x,IO[y]]转换为IO[Map[x,y]]

我有一个像这样的字符串到IO的映射 Map[String, IO[String]],我想将它转换为 IO[Map[String, String]]。如何做到?

12得票1回答
Scala Cats 模糊的隐式值

import cats._ import cats.implicits._ trait Console[F[_]]{ def readInput() : F[Int] def print(msg: String) : F[Unit] } class Foo { def doF...

9得票2回答
Doobie - 将任意效果提升到 ConnectionIO CE3

我正在尝试将项目从cats-effect 2迁移到cats-effect 3,我正在使用doobie与数据库进行交互。以前,我可以像描述的那样将ConnectionIO提升为IO,但是在升级后,我没有找到LiftIO[ConnectionIO]的任何实现,如何在CE3中实现相同的功能呢?

9得票2回答
构建有状态的对象是否应该使用效果类型进行建模?

在使用像Scala和cats-effect这样的函数式环境时,是否应该使用效果类型来建模具有状态的对象的构造? // not a value/case class class Service(s: name) def withoutEffect(name: String): Service...

8得票1回答
如何为cats-effect的Resource添加适当的错误处理

我正在尝试使用cats-effect以纯函数的方式进行一些基本的文件IO(写入/读取)。在按照这个教程后,以下是我用于读取文件的代码: private def readFile(): IO[String] = for { lines <- bufferedReader(new F...