import io:*; import mem:*; import vector:*; obj AbleToBeDestroyed (Destructable) { fun destruct(): void { println("Destroyed!"); } }; fun main(): int { var intVec.construct(): vector; intVec.addEnd(1); intVec.addEnd(3); intVec.addEnd(3); intVec.addEnd(7); println(intVec.size); for (var i: int = 0; i < intVec.size; i++;) print(intVec.at(i)); println(); // in place lambda map intVec.in_place(fun(it:int):int { return it*2; }) for (var i: int = 0; i < intVec.size; i++;) print(intVec.at(i)); println(); var subd = intVec.map(fun(it:int):int { return it-1; }) for (var i: int = 0; i < subd.size; i++;) print(subd.at(i)); println(); var newType = intVec.map(fun(it:int):double { return it+1.7; }) for (var i: int = 0; i < newType.size; i++;) print(newType.at(i)); println(); var desVec: vector* = new>()->construct(); var testDestruct: AbleToBeDestroyed; desVec->addEnd(testDestruct); delete>(desVec); return 0; }