Rubyのリファレンスマニュアル
興味があってRubyのリファレンスマニュアル(http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8)
を読んでいます。が、これはあんまりまじめにメインテナンスされていないように見えるのですが、プロのRuby使いは本なり何なりを買って、このドキュメントの前のほうはあんまり読まないということになっているのでしょうか?
ちなみに、僕が一番興味を持っているのは擬似BNF(http://www.ruby-lang.org/ja/man/?cmd=view;name=%B5%BF%BB%F7BNF%A4%CB%A4%E8%A4%EBRuby%A4%CE%CA%B8%CB%A1)の新しいものなのですが、sample/exyacc.rbというものを使うのが一番の近道なのでしょうか?識者の方教えてください。
どなたかが読んでくれるかもしれないので、以下に一応メモったものを載せておきます。なるべくドキュメントそのものに関するコメントであって、言語仕様には関らないところを書いていると思ってください。
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8
- 「あるオブジェクトが反応できるメソッドは、そのオブジェクトが所属するクラスによって一意に決定します。」というのは、いろいろな意味で不正確。
- 「所属クラスが変わることはありません。」クラス再定義した場合には、クラスが変わることもあるように思われる。
- 「モジュール」"include"と書かれているだけで説明は特になし。
- 「いくつの引数を受け取ることができるかはメソッドの定義時に決定し、変更することはできません。」可変個引数があるはず。
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9
- 「クラスとオブジェクト」クラスとオブジェクトという題だが、オブジェクトについては何も書かれていない。インスタンスの生成はクラスの機能ではない?
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%BC%C2%B9%D4
- 「フレーム」の説明がない。「トップレベルブロック」の説明がない。
- Smalltalkerとしては、クラスの再定義をしたときに既存のインスタンスに何が起こるか書いて欲しい。
- 「メソッド定義文」の「書式」がいい加減。argも複数取れるはず。
- 「実行中のブロック」という概念の説明がない。
- 突然「ブロック引数をとることができます」と書かれている。
- 「next, retry」の説明ははしょられているが、実は後に書かれている。
- 「eval, instance_eval, module_eval」「これなんだっけ?」と書かれているが、実際には説明が少し上のところにある。
- 「多重代入」まだ、だそうです。
- 「ブロックとはコードのある範囲に対応する実行時の構造」とあるが、実行時の構造というのは本当なのか?
- 「-e ロード」には説明なし。
- 「以下のコードのブロック実行開始時には」どこをさしているのかやや不明。
- 「そのオブジェクトをselfとするブロックだけから」これは実装よりの説明なのか?
- 「継承止め」意味不明
- 「トレースできること(?)」?
- 「また ::Const のように :: を前置した記法では Object::Const のみが参照可能です。」::はObjectの定数を示す略記法ということか?
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%CA%D1%BF%F4%A4%C8%C4%EA%BF%F4
- この「ローカル変数」のところが初出だと思うが、"p"が何をするものなのかここまで説明がない。
- 「ある文字列とSymbolオブジェクトは一対一に対応します。」本当か?
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%B1%E9%BB%BB%BB%D2%BC%B0
- 「代入」の「文法」の3番目、「expr..」というのが不明。以降、".."と"..."とがまちまちに出てくる。
- 「配列参照」の説明として「式n」まで使われている例がない。
- 「代入」の中に「属性参照」という項目があるが、実は代入について取り扱っている。
- 「多重代入」の「文法」のところで、かぎ括弧やカンマの表記がまちまち。(「文法」に二行ある意味はあるのか?)
- 「範囲式」これにこそ例が必要なのではないだろうか。
- 「and」ふたつの例題が同じ結果を返しているので、違いがわからない。例で使うpの呼び出し方が変わっている。
- 「not」まだ==の説明がなかったと思うが、notの説明のために使ってしまっている。(そういう意味では、未定義または偽の説明もないので、||=とかの説明もあいまい)
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%C0%A9%B8%E6%B9%BD%C2%A4
- 「制御構造」値を返さない式はなぜ必要なのか?
- 「クラス設計者が定義する事が出来るものです」おそらくは、プログラマが、ということであろう。
- 文法説明内の...と..は意味があって使い分けられているのだろうか。
- やはり、==と===について説明が、「演算子」かどこかにあるのが親切であろう。
- forのところで、「式を評価した結果のオブジェクトの各要素に対して」とあるが、オブジェクトの各要素というところはあいまい。-- 「イテレータ呼び出しにおける break, next, redo, retry をまとめると以下のようになります」この説明はしょうしょう無理がある。注釈を下から書くくらいなら実例を挙げるべき。
- BEGINの文法のところは、「文..」で良いのだろうか(良いのだな、きっと)。
- 「即ち一つの記述につきただ一回だけ登録が行われます。」やや意味不明。下の例も、「一回だけ」ということには無関係にみえる。
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%E1%A5%BD%A5%C3%A5%C9%B8%C6%A4%D3%BD%D0%A4%B7
- 「メソッド呼び出し」の「例:」は、文法で許されている呼び出しパターンをまったく網羅していない。
- http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1
- 「クラス定義」再定義したときに既存のインスタンスがどうなるのか書かなくては。
- 「さらに同じクラス名でクラス定義を書くとクラスの定義の追加になります」存在するメソッドも書き換えられるので「追加」というのはあやしい。
- 文法に書かれている、クラス定義内のensure, rescueが何をするのか説明がない。
- 「特異クラス定義」の例には、":"だけのメソッド定義があるが、これは「縦の2重点(..)」の意味なのか?
- 「メソッドの評価」には「すべてそのメソッドのコンテキストで評価されます」とあるが、コンテキストとは初出のような気がする。
- 「特異メソッド定義」の文法には"&"記法がない。