CoffeeScriptでHQ9F+のインタプリタ書いた。
http://d.hatena.ne.jp/Shinti/20111130/1322663012
を見て書こうとおもったので、書いた!
インスタンス変数のデフォルト引数でハマりそうなところ
out = (x) -> console.log x class Foo constructor: (@out = out) ->
このようなCoffeeScriptは
var Foo, out; out = function(x) { return console.log(x); }; Foo = (function() { function Foo(out) { this.out = out != null ? out : out; } return Foo; })();
このようにコンパイルされる。
デフォルト引数の値に、インスタンス変数と同じ名前の変数を渡すと、インスタンス変数の方で隠されてしまうので注意。