val a = Some(7)
val b = Some(9)
Applicative[Option].ap2(Some(add))(a,b)
我尝试将此代码迁移到 kotlin 和箭头,如下所示。
Option.applicative()
.tupled(Some(7), Some(9))
.ap(Some(::add))
// works but dirty
fun add(tuple: Tuple2<Int, Int>): Int = tuple.a + tuple.b
// not work, compilation error
// fun add(a: Int, b: Int): Int = a + b
正如您所注意到的,Tuple2
必须在add
函数签名中指定。查了arrow的官方文档,没有apN
ap2、ap3、ap4这样的功能。
有没有办法使用不包含Tuple2
类型的第二个函数?