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;

})();

このようにコンパイルされる。
デフォルト引数の値に、インスタンス変数と同じ名前の変数を渡すと、インスタンス変数の方で隠されてしまうので注意。