gotin blog

Whatever gotin wanna write

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するようにしちゃってもいいかも。
それだと適当に書いた字句解析じゃだめで、ちょっとまじめにパースしないといけなくなるけど。


サンフランシスコ空港のラウンジにて。
f:id:gotin:20090406072151j:image