[#27384] yaml and pp dump core — sheepman <sheepman@...>
こんばんは、sheepman です。
[#27406] Ripper.new("").parse blocks — Tanaka Akira <akr@...17n.org>
先ほど、端末から test-all したときに途中でブロックすることに
なかだです。
まつもと ゆきひろです
咳といいます。
[#27417] selector namespace — Shugo Maeda <shugo@...>
前田です。
なかだです。
前田です。
なかだです。
前田です。
原です。
なかだです。
[#27428] cannot build ruby with byacc (1.8) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
山本です。
なかだです。
山本です。
[#27429] 1.8.4 relrase plan? — "URABE Shyouhei aka. mput" <root@...>
卜部です。 RubyConf にかまけていた間に
なかだです。
[#27449] --without-hoge — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#27458] Matrix class is broken without mathn — akira yamada / やまだあきら <akira@...>
Debianユーザからrequire "mathn"しないときに
まつもと ゆきひろです
酒井といいます。
まつもと ゆきひろです
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
原です。
[#27460] Re: [ruby-cvs:15780] ruby, ruby/lib: * lib/mkmf.rb (create_makefile): do not unnecessary empty directories. — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
なかだです。
[#27470] def Foo::Bar.baz; end — "URABE Shyouhei aka.mput" <root@...>
卜部です。
[#27484] 1.8.4 feature freeze? — "URABE Shyouhei aka. mput" <root@...>
卜部です。
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
卜部です。
[#27492] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
わたなべです。
山本です。
山本です。
こんにちは、なかむら(う)です。
なかだです。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
[#27511] RCR 322: Use log identities to improve BigMath::log performance — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
小林です。
まつもと ゆきひろです
小林です。
まつもと ゆきひろです
[#27513] broken Qtrue in 64bit environment — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#27532] [win32] replaced symbols — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
[#27535] Re: [ruby-list:41402] Re: 全角スペースを区切りとした文字列分解で — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#27551] 1.8.4 検証を(だれが|どのように)行うか — "URABE Shyouhei aka.mput" <root@...>
さて、 1.8.4-Preview1
植田@ネットフォレストと申します。
山本です。
卜部です。
山本です。
なかだです。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
In message <20051031093107.5B79.USA@garbagecollect.jp>
こんにちは、なかむら(う)です。
卜部です。
[#27580] 1.8.4 open problems? — "URABE Shyouhei aka.mput" <root@...>
卜部です。
[ruby-dev:27417] selector namespace
前田です。
selector namespaceを導入しませんか?、という提案です。
いつもまつもとさんに「よくわからないから」と逃げられるので、
ECMAScriptを参考に仕様についても考えてみました。
基本的なコンセプトは、メソッド名を拡張して名前空間を利用
できるようにするというものです。
名前空間と(修飾されていない)メソッド名の区切り文字を何に
するかが悩ましいところ(::が自然ですが、他と衝突するので)
ですが、ここでは仮に$を使うことにします(御推察の通りCLUから
取ったものです)。
たとえば、
class Foo
def bar$baz
puts "Foo#bar$baz"
end
end
のようにメソッドを定義すると、Fooクラスに、fooという名前空間の
barというメソッドを定義します。
呼び出す時は、
foo = Foo.new
foo.bar$baz
のように呼び出します。
これだけでは、毎回名前空間を指定しないといけないので、あまり
うれしさがありません。そこで、usingという予約語を導入して、
名前空間を省略できるようにします。
using bar
foo = Foo.new
foo.baz #=> Foo#bar$bazの呼び出し
usingが効力を及ぼす範囲が、静的なスコープであるとします。
具体的には、ファイル単位か、クラス・モジュールの単位がよいのでは
ないかと思います。
def bar
end
のように、メソッド名が名前空間で修飾されていない場合は、global
という特殊な名前空間にメソッドが定義されているものとします。
つまり、上記は、
def global$baz
end
の省略形です。
また、globalという名前空間はデフォルトでusingされているものとします。
文法を別にすれば、ここまではあまり問題ないかと思います。
問題は継承とからむケースです。
たとえば、
class String
def jcode$length
end
end
class MyString < String
def length
end
end
のようなメソッド定義があった場合、
using jcode
s = MyString.new("あいうえお")
p s.length
という呼び出しで、どちらの定義が呼び出されるべきでしょう?
私の提案する仕様では、答えはMyString#lengthです。
メソッド探索のルールは単純で、
(1) 継承関係で下位(サブクラス側)のクラス・モジュールから順に探索。
(2) 対象のクラス・モジュールで定義されている、usingされている名前空間の
lengthメソッドをすべて探す(ここではjcode$lengthとglobal$length)。
(3) そのクラス/モジュールに該当メソッドが複数ある場合はエラー。
ただし、該当メソッドが二つで、一方がglobalである場合、global
でない方を採用する。
(4) そのクラス/モジュールに該当メソッドがない場合は上位のクラス・
モジュールを探索((2)に戻る)。
というものです。
ECMAScriptの仕様はもっと複雑(http://shugo.net/jit/20050720.html#p02)
なのですが、上記くらいのわかりやすいルールでよいように思います。
予想される反対意見に、「jcode$lengthの方を優先させる方が便利なケースも
あるのではないか」というものがありますが、そういう場合は以下のように
名前空間で修飾されたメソッド呼び出しをしてください、というのが答えです。
p s.jcode$length
以上、夜行バスで寝ぼけ頭で考えただけなので穴があるかとは思いますが、
議論の叩き台になれば幸いです。
--
前田 修吾