kast 0.1.0

kast programming language
Documentation
use std;

# TODO mark generator with yielding effect

let generator = fn(void) {
	print "yielding 1";
	yield "1";
	print "yielding 2";
	yield "2";
};

for value in generator () {
	print value;
};

print "now using generator as value";

# TODO types should be inferred

let g = generator_value[Yield: string, Resume: void, Finish: void] generator;
print "calling .next()";
dbg <| g.next();
print "calling .next()";
dbg <| g.next();
print "calling .next()";
dbg <| g.next();
# dbg <| g.next(); # this one panics since generator is finished