イテレータ

XtalRubyのような

100.times{ |i|
 println(i.to_s);
}

という要素繰り返し構文があります。

Rubyではメソッドにブロックを渡す内部イテレータ方式ですが、XtalではメソッドがIteratorオブジェクトを返し、それを反復するという外部イテレータ方式を採用しています。
ですので次のようなことが出来ます。

  iter: 100.times; // 0〜99を繰り返すイテレータオブジェクトを変数に入れておける。

  // 反復開始  
  iter{

    // ブロックで暗黙的に定義されるitをプリントする。
    it.p;
  } 

関数呼び出しを "式()" で行うように、イテレーションを "式{}" で行うわけです。

Xtalにopenというファイルを開く関数を追加しましたが、これもRubyのようにブロックで記述できます。

open("out.txt", "w"){
  // it.write(); まだFileStreamクラスにwriteメソッドが無い…

  // ブロックから抜け出すと自動的にファイルはクローズされる。
}
else{ // elseを付けられる
  // open出来なかった場合に通る
}