ユーザー定義のif文

Xtalはブロックを使うことで、if文とほとんど同じ機能を書くことが出来ます。

If: class{
  _cond;
  initialize: method(cond){ _cond = cond; }
  block_first: method{ return _cond ? this : null; }
  block_next: method{ return null; }
}


If(n < 20){
  "true".p;
}
else{
  "false".p;
}


ループ文につけられるelse節の意味をPythonと変え、nobreak節を導入したのは、これを正常に動かすためです。

もし、else節をPythonと同じ意味にしてた場合、次のように書かなければなりませんでした。

If(n < 20){
  "true".p;

  break; // elseに行かないようにおまじない・・・
}
else{
  "false".p;
}

さて、こんな擬似if文が書けて何が嬉しいんでしょうか?
一例としては、次のようなメソッドで役立つんではないかと考えてます。

// 現在のMutexクラスにtry_lockは無いんですけどね。
mutex.try_lock{
  // lock成功 
}
else{
  // lock失敗
}