Files
kraken/tests/test_lambda.krak

46 lines
989 B
Plaintext
Raw Normal View History

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())
}
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-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
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);})
var outside = 40
runLambda(fun():int { var toRet = outside; outside += 1; return toRet;})
println(outside)
runLambda(fun():int { var toRet = outside; outside++; return toRet;})
println(outside)
2015-05-25 22:03:24 -04:00
return 0
}