2
我试着写了Kleisli幂在科特林:Kleisli幂在科特林
fun <A,B> kleisli(n: Int, f: (A) -> B): (A) -> B = if (n == 1) f else { it -> f(kleisli(n-1, ::f)(it)) }
,只是组成f
,n
倍(请不要把n = 0
在我的代码)。
Kotlin(1.0.6)抱怨error: unsupported [References to variables aren't supported yet]
指向::f
。
我做错了什么?
谢谢!这样可行。似乎我需要更多地了解Kotlin。也很抱歉错过了构成f,f需要是 - > a。 –
只是为了好奇,那个错误是什么意思(引用变量还不支持)? –
@Koyomi-chan,如果支持,':: f'将意味着对函数参数'f'的可调用引用 - 一个包含有关该参数的一些信息并提供获取其值的方法的对象。已经有[函数引用](http://kotlinlang.org/docs/reference/reflection.html#function-references)和[绑定可调用引用](https://gist.github.com/udalov/f86fbea722a53730f3f5777d871ab8ba) Kotlin,都使用'::'。但现在不支持局部变量和参数引用。 – hotkey