scala-cats相关内容

为什么验证会违反单一律?

onSO解释了为什么像scalaz、cat(Scala)或Arrow(Kotlin)这样的验证不能是Monad。 据我所知,这是因为他们根据应用函数器对Monad进行了建模,并且将验证的期望行为作为应用(集合所有无效)与将验证作为Monad的期望行为(序列验证和在第一个无效时快速失败)不同。因此,当您希望快速失败时,需要将验证转换为任一验证(这是一个单体)。 在https://groups ..
发布时间:2022-04-20 13:55:12 其他开发

如何将 Seq[Either[A,B]] 减少为 [A,Seq[B]]?

给定一个 Seq[Either[String,A]] 的序列,其中 Left 是一条错误消息.我想获得一个 Either[String,Seq[A]],在那里我得到一个 Right(这将是一个 Seq[A]), 如果序列的所有元素都是 Right.如果至少有一个 Left(错误消息),我想获取第一条错误消息或所有错误消息的串联. 当然,您可以发布 cat 或 scalaz 代码,但我也对不使 ..
发布时间:2022-01-02 13:40:49 其他开发

小猫 - 模棱两可的进口(再次)

这个答案https://stackoverflow.com/a/56366311/2682459 展示了如何使用对象以在使用 Kitten 时提供类型类的自定义实现.将相同的原理应用于以下代码虽然不起作用: 包com.xxx.yyy.zzz导入cats._、cats.derived._、cats.implicits._对象测试扩展应用{案例类内部(双:双)案例类外部(内部:内部,s:字符串)隐式 ..
发布时间:2021-07-23 20:13:12 其他开发

小猫 - 不明确的进口

我几乎完全从此处找到的“派生展示"示例中获取了以下代码:https://github.com/milessabin/kittens 导入cats._、cats.derived._、cats.implicits._对象测试扩展应用{案例类地址(街道:字符串,城市:字符串,州:字符串)case class ContactInfo(phoneNumber: String, address: Addre ..
发布时间:2021-07-23 20:12:56 其他开发

mapN 复合应用

我知道我可以编写 Apply 来处理嵌套结构,就像在 def mapAll[A, B, C, D](o1: List[Option[A]],o2:列表[选项[B]],o3:列表[选项[C]])(f: (A, B, C) => D):列表[选项[D]] = {进口猫._导入 cat.implicits._Apply[List].compose[Option].map3(o1, o2, o3)(f) ..
发布时间:2021-07-15 21:22:53 其他开发

Scala Cat 使用 Ior 累积错误和成功

我正在尝试使用 Cats 数据类型 Ior 来累积使用服务的错误和成功(可能返回错误). def find(key: String): F[Ior[NonEmptyList[Error], A]] = {(为了 {b Ior.leftNel(另一个错误)}}def findMultiple(keys: List[String]): F[Ior[NonEmptyList[Error], List[ ..
发布时间:2021-07-15 21:16:51 其他开发

Scala 猫,遍历 Seq

我知道我可以遍历Lists 导入cats.instances.list._进口cats.syntax.traverse._def doMagic(item: A): M[B] = ???val 列表:列表[A] = ???val 结果:M[List[B]] = list.traverse(doMagic) 我可以将 Seq 来回转换为 List val seq: Seq[A] = ???va ..
发布时间:2021-07-15 21:07:40 其他开发

Scala:SeqT monad 转换器?

如果我们有这样两个函数... def findUserById(id: Long): Future[Option[User]] = ???def findAddressByUser(user: User): Future[Option[Address]] = ??? ...然后我们可以使用cats OptionT monad 转换器来轻松地编写理解它们: for {用户 我想以这种方式组 ..
发布时间:2021-07-15 20:59:31 其他开发

是什么 ?类型?

我正在尝试为具有多个类型参数的类型实现一个cats Monad 实例.我查看了cats Either 实例,看看它是如何在那里完成的.下面复制了来自猫的 Either Monad 实例代码的一部分: 导入cats.Monad对象要么Monad {隐式定义实例[A]:Monad[Either[A, ?]] =新的 Monad[Either[A, ?]] {def pure[B](b: B):Eit ..
发布时间:2021-07-15 20:44:59 其他开发

函数定义中返回类型后的大括号

阅读 cats 库时函子源码,没看懂toFunctorOps函数返回类型后面的curl块是干什么的;我的猜测是这个块将作为构造函数的一部分执行?如果是这样,那么为什么类型 TypeClassType 用相同的代码定义了两次 type TypeClassType = Functor[F]? trait Ops[F[_], A] extends Serializable {type TypeCla ..
发布时间:2021-07-15 20:39:29 其他开发

带有 Coproduct 和 monad 转换器的 Scala Free Monads

我正在尝试开始在我的项目中使用免费的 monad,并且我正在努力使其优雅. 假设我有两个上下文(实际上我有更多) - Receipt 和 User - 两者都对数据库进行操作,我想将它们的解释器分开并组合它们在最后一刻. 为此,我需要为每个操作定义不同的操作,并使用 Coproduct 将它们组合成一种类型. 这是我经过几天的谷歌搜索和阅读后的结果: //收据密封性状 ReceiptOp[ ..
发布时间:2021-07-15 20:36:04 其他开发

将潜在的未来恢复到 Cats'EitherT's Left 中?

如果我有一个 Future[Either[String, Int]] 表示可能的错误消息 (String) 或成功的计算 (Int),将 Future 的潜在故障作为错误消息移到左侧很简单: def handleFailure(fe: Future[Either[String,Int]]) =f.recover({ case e: Exception => Left(s"failed becau ..
发布时间:2021-07-15 20:32:37 其他开发