import util:* import io:* obj test(Object) { var counter:int fun construct(): *test { counter = 0 println("construct with 0") return this } fun construct(it:int): *test { counter = it print("construct with "); println(it) return this } fun copy_construct(old: *test):void { counter = old->counter+1 print("copy construct from "); print(old->counter); print(" to "); println(counter) } fun destruct():void { print("destruct with "); println(counter) } } fun main():int { println(min(1,2)) println(min(7.0,8.0)) println(max(1,2)) println(max(7.0,8.0)) range(3,13, 3).for_each(fun(i: int) { print(i); }) println() range(2,8).for_each(fun(i: int) { print(i); }) println() println(range(2,8,2).any_true(fun(i: int): bool { return i%2 == 1; } )) println(range(3).any_true(fun(i: int): bool { return i%2 == 1; } )) var oddPair = make_pair(3, "hi") println(oddPair.first) println(oddPair.second) println("construct") var test1.construct():test var test2.construct(100):test println("make_pair") var test_pair = make_pair(test1, test2) println("done") return 0 }