> と、ここまで書いて、実際に動作するプログラムかどうか試そうとしたら、
> 文法エラーになっちゃいました。
実装をちらっと見たら、すぐ原因が分かりました。
最新版である crowbar 0.3 ではなくて、crowbar 0.1.01 を使っていた
のが原因でした。(大汗;;;)
大変失礼しました。
http://kmaebashi.com/programmer/devlang/index.html
のページに、最新版への配布ページへのリンクがあると、
多少はこういう間違いが減るかもしれません…
で、コンパイルしてみると、
1. 単項の「!」演算子がない。(これは欲しいです)
2. C言語の「,」演算子がないので、for 文の3番目の項の
  「i.next(), j.next()」でエラー
3. closure() への代入文で「;」を忘れていた
といった問題がありました。
直してみたものが以下の通りなんですが、
実行すると
 33:面面面面民藥算劼boolean型には使えません。
となります。これはなぜでしょうね。
function ArrayIterator(anArray) {
  this = new_object();
  this.theArray = anArray;
  this.index = 0;
  this.first = closure() { this.index = 0; };
  this.next = closure() { this.index = this.index++; };
  this.isDone = closure() { return this.index >= this.theArray.size(); };
  this.currentItem = closure() { return this.theArray[this.index]; };
  return this;
}
function compare(i, j) {
  while (i.isDone() == false && j.isDone() == false) {
    if (i.currentItem() < j.currentItem()) {
      return -1;
    }
    if (i.currentItem() > j.currentItem()) {
      return 1;
    }
    i.next(); j.next();
  }
  if (i.isDone() && j.isdone()) {
    return 0;
  }
  if (i.isDone()) {
    return -1;
  } else {
    return 1;
  }
}
a = {1, 2, 3, 4, 5, 6, 7, 8}; 
for (i = ArrayIterator(a); i.isDone() == false; i.next()) {
  print("" + i.currentItem(), " ");
}
print("\n");