我有 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/