2015-05-25 22:03:24 -04:00
|
|
|
import io:*
|
2015-06-26 13:29:37 -04:00
|
|
|
import vector:*
|
2015-05-25 22:03:24 -04:00
|
|
|
|
|
|
|
|
fun runLambda(func: fun():int):void {
|
|
|
|
|
println(func())
|
|
|
|
|
}
|
|
|
|
|
|
2015-06-25 04:09:19 -04:00
|
|
|
fun somethingElse():int { return 4; }
|
2015-05-25 22:03:24 -04:00
|
|
|
|
2015-06-26 13:29:37 -04:00
|
|
|
fun callLambda(func: fun(int):void):void {
|
|
|
|
|
func(10)
|
|
|
|
|
}
|
2015-06-25 04:09:19 -04:00
|
|
|
|
2015-06-26 13:29:37 -04:00
|
|
|
fun itr<T>(it: T, func: fun(T):T):T {
|
|
|
|
|
println(it)
|
|
|
|
|
return func(it);
|
|
|
|
|
}
|
2015-05-25 22:03:24 -04:00
|
|
|
|
|
|
|
|
fun main():int {
|
2015-06-26 13:29:37 -04:00
|
|
|
var func = fun():void { println("8"); }
|
|
|
|
|
func()
|
|
|
|
|
runLambda(fun():int { return 9;})
|
|
|
|
|
callLambda(fun(a:int):void { println(a);})
|
|
|
|
|
var j = 0
|
|
|
|
|
while (j < 10) j = itr(j, fun(a:int):int { return a+1; })
|
2015-06-19 11:27:37 -04:00
|
|
|
|
2015-06-25 04:09:19 -04:00
|
|
|
runLambda(somethingElse)
|
|
|
|
|
println("closures now")
|
|
|
|
|
var a = 1337
|
|
|
|
|
runLambda(fun():int { return a;})
|
2015-06-26 13:29:37 -04:00
|
|
|
runLambda(fun():int { print(a); print(j); return j;})
|
|
|
|
|
|
|
|
|
|
var v = vector(80)
|
|
|
|
|
var idx = 0
|
|
|
|
|
runLambda(fun():int { return v.get(idx);})
|
|
|
|
|
|
2015-05-25 22:03:24 -04:00
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|