Sam
10/12/2018, 9:29 PMval lambda = { value : Int -> executor( value, this ) }
stephan_marshay
10/12/2018, 9:31 PMthis@myClass
Sam
10/12/2018, 9:35 PMmarstran
10/12/2018, 9:38 PMSam
10/12/2018, 9:39 PMgcx11
10/12/2018, 9:51 PMval lambda: (Int) -> String = { value : Int -> executor( value, ::lambda.get() ) }
fun executor(value: Int, body: (Int) -> String): String {
return body(value)
}
fun main(args: Array<String>) {
println(lambda(1))
}
marstran
10/12/2018, 9:52 PMSam
10/12/2018, 9:52 PMmarstran
10/12/2018, 9:56 PMlambda
is a top level property.val
won't have a getter.Sam
10/12/2018, 9:56 PMmarstran
10/12/2018, 10:00 PMfun <In, Out> y(f: ((In) -> Out) -> (In) -> Out) : (In) -> Out = {
f(y(f))(it)
}
With that function you can do this (assuming executor returns String):
val lambda = y<Int, String> { f -> { value : Int -> executor(value, f) } }
I don't understand how that Y-combinator works, but it does the job 😛Sam
10/12/2018, 10:00 PM