前田です。

At Fri, 02 Mar 2001 20:40:36 +0900,
Minero Aoki <aamine / dp.u-netsurf.ne.jp> wrote:
> > > という流れで(これ自体はわかる)、なんで foo/bar(Foo::Bar) と
> > > foo/baz(Foo::Baz) をまとめるのが foo.rb になるのが同様に自然と言え
> > > るのかわかんない、ということです。
> 
> > モジュールFooという名前空間で提供される一まとまりのライブラリが
> > foo.rbで提供されるというのはパスが対応してるような気がするのです
> > が、そんなことないです?
> 
> ぼくにとってはむしろそれは都合がいいんですけど、その理屈だと
> require 'foo' が foo/* をロードするのを正当化してしまいません?
> 
>     foo.rb → Foo::* → foo/*

たぶん、ここが他の人にとっては異論があるところで

  モジュールFooという名前空間で提供される一まとまりのライブラリ

と

  Foo::*

はかならずしも一致しないんじゃないでしょうか。

だから、requireで自動的に

  foo -> foo.rb -> foo.so -> foo/*

という検索をさせることに違和感がある、と。

> ようするにライブラリ foo に対して foo.rb を提供するのは機械的な
> 名前の対応操作では説明不可能なんではないでしょうか。だからイヤって
> わけじゃないです。別の論理だということ。

ええ、だからライブラリの提供者が自分で適切なfoo.rbを用意してくだ
さい、というのがまつもとさんの推奨されているスタイルなんだと思い
ます。

> てゆーか、最初はファイル名とクラス名は関係なかったはずなんですよね
> [ruby-list:15293]
> 
> でもいつの間にか「ファイル名 == メインクラス名.downcase」がお勧め
> になっていて、さらに今回は require 名は機能をあらわすから、という
> ことになってるところがちょっと釈然としないんですけど…。

たぶん、「ファイル名 == 機能名 == メインモジュール名.downcase」
ということなんじゃないですかね。

まつもとさんが機能うんぬんと言っているのは、

require 'foo/default'

のdefaultのように機能とぜんぜん関係ない名前をユーザに見せることに
反対するために言っているわけであって、クラスパスとファイルパスの
対応という原則をくつがえすような意味はないんじゃないでしょうか。

> > あれ、何でruby-extなんでしたっけ。
> 
> 最初に ext に出されてしまったから?  ^^;;

ruby-listの方がよかったかもしれないですね。

-- 
前田 修吾