Types 如何在Kotlin中使用递归类型

Types 如何在Kotlin中使用递归类型,types,functional-programming,kotlin,Types,Functional Programming,Kotlin,我想做的是这样的事情 fun <F, A, R> recur(f: (F, A) -> R, arg: A): R = f(f, arg) where F = (F, A) -> R 乐趣重现(f:(f,A)->R,arg:A):R=f(f,arg) 其中F=(F,A)->R 如何在Kotlin中键入此函数?您可以将其定义为 fun <F : (F, A) -> R, A, R> recur(f: F, arg: A): R = f(f, arg)

我想做的是这样的事情

fun <F, A, R> recur(f: (F, A) -> R, arg: A): R = f(f, arg)
where F = (F, A) -> R
乐趣重现(f:(f,A)->R,arg:A):R=f(f,arg) 其中F=(F,A)->R 如何在Kotlin中键入此函数?

您可以将其定义为

fun <F : (F, A) -> R, A, R> recur(f: F, arg: A): R = f(f, arg)
funr,A,R>重复出现(f:f,arg:A):R=f(f,arg)

然而,我看不到任何令人满意的类型系统如何调用它

有趣。你能举例说明这个函数是如何使用的吗?