scala-cats相关内容

如何展平一系列猫的 ValidatedNel 值

我需要将一系列 cats.data.ValidatedNel[E, T] 值展平为单个 ValidatedNel 值: val 结果:Seq[cats.data.ValidatedNel[E, T]] = ???val flattenedResult:cats.data.ValidatedNel[E, T] 我可以这样做: importcats.std.list._,cats.syntax. ..
发布时间:2021-07-15 19:46:18 其他开发

优化免费Monad

如果我有一个值 a:Free [Op,A] ,是否可以“展平" a 的结构,以便两个 Op 可能会折叠成一个吗? 上下文:我想在解释之前将其作为优化步骤执行,因为 Op 的语义是其运算是幂等的.因此,如果两个“连续"出现,则可以在不增加程序语义的情况下消除第二个. 解决方案 据我所知,Free Monad程序无法进行这种自省,因为它表示顺序计算,其中每一步都取决于另一步的结果. ..

为什么猫的效果异步签名使用Either [Throwable,A]而不使用Try [A]?

很久以前,我们团队内部就使用 Try [A] 与 Ether [Throwable,A] 进行了长时间的辩论,最终我们选择了 Try [A] ,因为当 Ether 的左侧为 Throwable 时,它们在语义上是相同的.那时我正在搜索使用 Either [Throwable,A] 的代码库,但找不到任何代码. 但是今天,在观看Fabio Labella在上的讲话时,纤维如何工作?幕后偷看,签 ..

如何使用Scala Cats验证正确的方法?

以下是我的用例 我正在使用猫来验证我的配置.我的配置文件在json中. 我使用我使用Cats的动机是收集验证时出现的所有错误. 我的问题是指南中给出的示例属于此类 case class Person(name: String, age: Int) def validatePerson(name: String, age: Int): ValidationResult[Pers ..
发布时间:2020-11-11 20:11:48 其他开发

带有StateT [IO,_,_]的FS2流,定期转储状态

我有一个程序,它消耗无限的数据流.在此过程中,我想记录一些指标,由于它们只是简单的总和和平均值,因此形成了一个monoid.我想定期地在某个地方写出这些指标,清除它们,然后返回累积它们.我基本上是: object Foo { type MetricsIO[A] = StateT[IO, MetricData, A] def recordMetric(m: MetricData): ..
发布时间:2020-07-19 19:32:35 其他开发

了解Scala FP库

仅出于快速起见,对于那些想要开始使用Scala FP库的人来说,这是一个在纯FP方面变得更好的旅程. 有人可以澄清一下Cats和Cats-Effects,Cats-Effects IO之间的区别/关系吗?最重要的是,Zio和Monix对此持何立场?最后,与ScalaZ 7/8有什么关系? 到目前为止,根据我所读的内容,可以根据可用的文档很好地组合要使用的库,它们的作用是Cats,然后是 ..
发布时间:2020-07-19 19:31:32 其他开发

特效和异步IO的细节

几天来,我一直将注意力集中在猫效应和IO上.而且我觉得我对这种效果有误解,或者只是错过了要点. 首先-如果IO可以取代Scala的Future,我们如何创建异步IO任务?使用IO.shift?使用IO.async吗? IO.delay是同步还是异步?我们可以使用类似Async[F].delay(...)的代码来执行通用异步任务吗?还是当我们使用unsafeToAsync或unsafeToFu ..
发布时间:2020-07-19 19:31:30 其他开发

尾递归算法,用于生成图中的所有拓扑顺序

给出一个图,我需要生成所有拓扑顺序. 例如,给定下图: 我要生成所有拓扑顺序,这些顺序是: 2 4 7 5 2 7 4 5 2 4 5 7 因为可能存在许多拓扑顺序,所以我需要延迟生成它们.当前,我有一个递归的有效实现,并且可以在scala-graph库的顶部进行工作: import scalax.collection.Graph import scalax.colle ..
发布时间:2020-07-11 02:34:49 其他开发