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

Dae*_*yth 7 functional-programming scala scalaz applicative

我有scalaZ可用.

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

我觉得我可以用应用程序做些什么,但我找不到合适的方法.

lpi*_*ora 5

编辑

一开始没有得到它,OP有功能元组.在评论中建议的情况下,这应该有效:

val in = ("1", 2)

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

val out = (in.bimap[Int, String] _).tupled(fnT)
Run Code Online (Sandbox Code Playgroud)

如果你有两个函数并想在元组上应用它们,你应该能够做到:

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)
Run Code Online (Sandbox Code Playgroud)