callee

Xtalはcalleeキーワードで、現在実行中の関数を取得出来ます。そのため callee() と書くと再帰呼び出しとなります。

これは無名関数で再帰を可能にするために導入されました。

例:

 foo : fun(f){
   println(f(10));
 }
 
 foo(fun(i){
   if(i==0)
     return 1;
   return callee(i - 1) + i; 
 });

calleeは取得や再帰呼び出しが最適化されるため、普通にローカル変数として取り出すより若干早くなります。