functionと書くのは面倒なので@って書いたらいいことにしてみるというのはどうだろう
というのを試してみるスクリプトを書いてみた。僕的には
setTimeout(@{alert('foo');},50);
とか
// 以下、 // http://svn.coderepos.org/share/lang/javascript/jsdeferred/trunk/sample.html // ↑ここのサンプルを書き換えたもの next(@{print("start");}). next(@{ @pow (x, n) { @_pow (n, r) { print([n, r]); if (n == 0) return r; return call(_pow, n - 1, x * r); } return call(_pow, n, 1); } return call(pow, 2, 10); }). next(@(r){print([r, "end"]);}). error(@(e){alert(e);}); @print (m) { $("#basic-code").append("\n// "+m) }
なんて書けるといいじゃん、と思ったのだけど、functionって書いてないと逆に分かりづらいのかもしれない。
いろいろ整理せず、ゴチャゴチャと
http://github.com/gotin/chain/tree/master
↑ここに置いてみました。
at_functioin.jsがそのためのスクリプトで、af_test.jsが利用例で、test.htmlがconsole.logを使って動作を試してみるサンプル。chain.jsはJSDeferredみたいなやつ。
ついでに、
@dice{1+Math.floor(Math.random()*6);} alert(dice()); // 1-6を表示
とかで最後の式の値をreturnするようにしちゃってもいいかも。
それだと適当に書いた字句解析じゃだめで、ちょっとまじめにパースしないといけなくなるけど。