セレクターネームスペースを追加するか?
やはりセレクターネームスペースは欲しいと考えてます。
ecmascript4の名前空間のような。
http://www.google.co.jp/search?q=ecmascript4+%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP228JP229
コレがあると、例えば次の問題がなくなります。
Xtalでは次のように、builtinのクラスにメソッドを追加できます。
// 各要素を2倍しつつイテレートするイテレータ Iterator::x2: method(){ return fiber{ this{ yield it*2; } } } [1, 2, 3, 4].each.x2.to_a.p; //=> [2, 4, 6, 8]
この追加は全体からみえてしまうので、「あるファイル内だけで使う便利メソッドとして追加したい」という場合に引け目を感じます。
他での同名のメソッドの追加があったりした場合に衝突してしまうからです。
下のように回避することもできますが、上のほうが見た目がいいです。
x2: fun(iter){ return fiber{ iter{ yield it*2; } } } x2([1, 2, 3, 4].each).to_a.p; //=> [2, 4, 6, 8]
セレクターネームスペースがあれば
NS: namespace; Iterator::x2@NS: method(){ return fiber{ this{ yield it*2; } } } [1, 2, 3, 4].each.x2@NS.to_a.p; //=> [2, 4, 6, 8]
みたいな!