scala - 如何将值元组与函数元组结合起来?

标签 scala functional-programming scalaz applicative

我有 ScalaZ 可用。

我有一个 (A, B)和一个 (A => C, B => D) , 我想要一个 (C, D)以简单易读的方式。

我觉得我可以用 applicatives 做一些事情,但我找不到正确的方法。

最佳答案

编辑

一开始没明白,OP 有函数元组。在评论中建议的这种情况下,这应该有效:

val in = ("1", 2)

val fnT = ((s: String) => s.toInt, (i: Int) => i.toString)

val out = (in.bimap[Int, String] _).tupled(fnT)

老的

如果您有两个函数并希望将它们应用于元组,您应该能够执行以下操作:
import scalaz._
import Scalaz._

val in = ("1", 2)

val sToi = (s: String) => s.toInt
val iTos = (i: Int) => i.toString


val out = sToi <-: in :-> iTos
// or
val out1 = in.bimap(sToi, iTos)
// or
val out2 = (sToi *** iTos)(in)

关于scala - 如何将值元组与函数元组结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28594972/

相关文章:

scala - Akka 中的 `self` 是什么?

scala - 如何在Scala中实现 `List` monad变压器?

scala - Scala 3 宏中的显式类型转换

list - 如何在 Scala 中展平不同类型的列表?

java - Java中有没有类似于grep()的过滤方法?

c# - Roslyn - 如何将多个节点分别替换为多个节点?

java - 实现通用解析器类

Scalaz:过滤器在|@|中扮演什么角色?

scala - 标记类型中的协方差

javascript - Scala.js 运行时编译为 Javascript