Kotlin 在arrow kt中是否有类似ap2、ap3的功能?
我看到scala代码在这里使用Kotlin 在arrow kt中是否有类似ap2、ap3的功能?,kotlin,arrow-kt,Kotlin,Arrow Kt,我看到scala代码在这里使用 vala=Some(7) val b=一些(9) 应用程序[选项].ap2(部分(添加))(a、b) 我尝试将此代码迁移到kotlin和arrow,如下所示 Option.applicative() .tupled(Some(7), Some(9)) .ap(Some(::add)) // works but dirty fun add(tuple: Tuple2<Int, Int>): Int = tuple.a
vala=Some(7)
val b=一些(9)
应用程序[选项].ap2(部分(添加))(a、b)
我尝试将此代码迁移到kotlin和arrow,如下所示
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
Option.applicative()
.tuple(一些(7),一些(9))
.ap(部分(::添加))
//工作但肮脏
趣味添加(tuple:Tuple2):Int=tuple.a+tuple.b
//不工作,编译错误
//趣味加法(a:Int,b:Int):Int=a+b
正如您所注意到的,Tuple2
必须在add
函数签名中指定。
我搜索了arrow的官方文档,但是没有像ap2、ap3、ap4这样的apN
功能
是否有任何方法可以使用第二个未包含
Tuple2
类型的函数?一旦版本0.10可用,Arrow将在处理此问题的函数类型上有一个.tupled()
方法,因此您可以编写:
Option.applicative()
.tupled(Some(7), Some(9))
.ap(::add.tupled())
fun add(a: Int, b: Int) = a + b
用于最多22个参数的函数