scala-cats相关内容
我需要将一系列 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.
..
..
我正在阅读牧猫 遍历页面上的最后一个例子,对我来说失败了. 在示例中,他们这样做:- scala>列表(右(1):Either[String, Int]).sequenceres5:Either[String,List[Int]] = Right(List(1))标度>列表(右(1):Either[String,Int],Left(“boom"):Either[String,Int]
..
我正在使用 BlazeClientBuilder[IO].resource 方法来获取 Client[IO].现在,我想模拟客户端进行单元测试,但不知道该怎么做.有没有一种很好的方式来嘲笑这个,我该怎么做? class ExternalCall(val resource: Resource[IO, Client[IO]], externalServiceUrl: Uri) {defretriev
..
如果我有一个值 a:Free [Op,A] ,是否可以“展平" a 的结构,以便两个 Op 可能会折叠成一个吗? 上下文:我想在解释之前将其作为优化步骤执行,因为 Op 的语义是其运算是幂等的.因此,如果两个“连续"出现,则可以在不增加程序语义的情况下消除第二个. 解决方案 据我所知,Free Monad程序无法进行这种自省,因为它表示顺序计算,其中每一步都取决于另一步的结果.
..
我正在尝试使用 cats-effect以纯粹的功能方式获取一些基本文件IO(写入/读取).遵循本教程之后,下面就是我读取文件的结果: 私有def readFile():IO [String] = for {行
..
很久以前,我们团队内部就使用 Try [A] 与 Ether [Throwable,A] 进行了长时间的辩论,最终我们选择了 Try [A] ,因为当 Ether 的左侧为 Throwable 时,它们在语义上是相同的.那时我正在搜索使用 Either [Throwable,A] 的代码库,但找不到任何代码. 但是今天,在观看Fabio Labella在上的讲话时,纤维如何工作?幕后偷看,签
..
我正在学习Cats库,发现*是通用类型,例如: implicit def catsDataSemigroupKForValidated[A](implicit A: Semigroup[A]): SemigroupK[Validated[A, *]] = new SemigroupK[Validated[A, *]] { def combineK[B](x: Validated[
..
以下是我的用例 我正在使用猫来验证我的配置.我的配置文件在json中. 我使用我使用Cats的动机是收集验证时出现的所有错误. 我的问题是指南中给出的示例属于此类 case class Person(name: String, age: Int) def validatePerson(name: String, age: Int): ValidationResult[Pers
..
Scala 2.13 我有很多类似形式的特征 trait SomeTrait[F[_]]{ def someOp(): F[Unit] //... } 及其实现 class SomeTraitImpl[F[_]: Sync] extends SomeTrait[F]{ //... } object SomeTrait{ def apply[F[
..
我正在尝试通过Java实现Scala特性,该特性在另一个容器中具有通用的容器类型,无法通过Java导入自动解决,Scala代码如下: import cats.data.{EitherNel, Kleisli, NonEmptyList} import cats.implicits._ package Export_To_Java { package object types {
..
我想知道如何在Scala中将List [Try [T]]转换为Try [List [T]]? 我尝试过使用累加器并向右折叠,但这似乎并不理想. 解决方案 使用猫就像这样简单: import cats._ import cats.data._ import cats.implicits._ import scala.util.{Try, Success, Failure} va
..
我试图理解scalaz中的Lens(令人惊讶的是在cats-core中没有找到类似的东西),并且遇到了所谓的Store,它是类型别名: type StoreT[F[_], A, B] = IndexedStoreT[F, A, A, B] type IndexedStore[I, A, B] = IndexedStoreT[Id, I, A, B] type Store[A, B] = St
..
我发现自己有几次遇到减速器/像这样组合fn的情况: def combiner(a: String, b: String): Either[String, String] = { (a + b).asRight[String] } 它是一个虚拟实现,但fn可能失败,因此它返回一个.然后,我有了要通过reduce/fold传递的值的列表.我能想到的最好的方法(假设列表的类型是
..
我有一个程序,它消耗无限的数据流.在此过程中,我想记录一些指标,由于它们只是简单的总和和平均值,因此形成了一个monoid.我想定期地在某个地方写出这些指标,清除它们,然后返回累积它们.我基本上是: object Foo { type MetricsIO[A] = StateT[IO, MetricData, A] def recordMetric(m: MetricData):
..
仅出于快速起见,对于那些想要开始使用Scala FP库的人来说,这是一个在纯FP方面变得更好的旅程. 有人可以澄清一下Cats和Cats-Effects,Cats-Effects IO之间的区别/关系吗?最重要的是,Zio和Monix对此持何立场?最后,与ScalaZ 7/8有什么关系? 到目前为止,根据我所读的内容,可以根据可用的文档很好地组合要使用的库,它们的作用是Cats,然后是
..
几天来,我一直将注意力集中在猫效应和IO上.而且我觉得我对这种效果有误解,或者只是错过了要点. 首先-如果IO可以取代Scala的Future,我们如何创建异步IO任务?使用IO.shift?使用IO.async吗? IO.delay是同步还是异步?我们可以使用类似Async[F].delay(...)的代码来执行通用异步任务吗?还是当我们使用unsafeToAsync或unsafeToFu
..
给出一个图,我需要生成所有拓扑顺序. 例如,给定下图: 我要生成所有拓扑顺序,这些顺序是: 2 4 7 5 2 7 4 5 2 4 5 7 因为可能存在许多拓扑顺序,所以我需要延迟生成它们.当前,我有一个递归的有效实现,并且可以在scala-graph库的顶部进行工作: import scalax.collection.Graph import scalax.colle
..
这是一个依赖服务: public class Service1 {} 通过阅读器使用它的标量代码: object TupleEx { type FailFast[A] = Either[List[String], A] type Env[A] = ReaderT[FailFast, Service1, A] import cats.syntax.applicati
..
我在如何创建Functor[Dataset]的实例上苦苦挣扎...问题是,当您map从A到B时,Encoder[B]必须在隐式范围内,但我不是确定该怎么做. implicit val datasetFunctor: Functor[Dataset] = new Functor[Dataset] { override def map[A, B](fa: Dataset[A])(f: A
..