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