foom is a research language for my compiler/programming languages class. It will look similar C, but borrow heavily from Python and Groovy.
See more in Foom Documentation.
Quicksort (tests\qsort.fm):
list data = [3,1,20,4,7,2];
func printlist = {
list l = args[0];
sys.print("[");
for(int i = 0; i < l.length; i = i + 1) {
sys.print(l[i]);
if(i < l.length - 1)
sys.print(", ");
}
sys.println("]\n");
};
func swap = {
list l = args[0];
int t = l[args[1]];
l[args[1]] = l[args[2]];
l[args[2]] = t;
l;
};
func sort = {
list d = args[0];
int b = args[1];
int e = args[2];
if(e > b + 1) {
int piv = d[b];
int l = b + 1;
int r = e;
for(0;l < r;0) {
if(d[l] <= piv) {
l = l + 1;
} else {
r = r - 1;
swap(d, l, r);
}
}
l = l - 1;
swap(d, l, b);
sort(d, b, l);
sort(d, r, e);
}
};
printlist(data);
sort(data, 0, data.length);
printlist(data);Produces:
foom tests\qsort.fm 2>NUL [3, 1, 20, 4, 7, 2] [1, 2, 3, 4, 7, 20]