My favorites | Sign in
Logo
                
Code license: MIT License
Show all Featured downloads:
foom_0.0.1_release.zip
Show all Featured wiki pages:
Documentation
Feeds:
People details
Project owners:
  admiwi
Project committers:
goldschmidt

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]








Hosted by Google Code