正木です。ruby-list から移って来ました。

|でもやっぱり Sequence の第二引数以降はいらないと思います。Seuence に汎用
|性を持たせたいので、使途不明(?)なパラメータは排除しておきたいからです。

これは block 内の変数の scope を block 内に限りたいためです。
変数の scope の問題は一番間違えやすいので、余計な神経を使いたくないからで
す。
parameter を明示的に渡すことにするだけなので、汎用性を失うことにはなりません。

|それと、漸化式は文字列でなくブロックで与えた方が気持ちがいいです。数式処理
|をするなら別ですが、文字列に入るのは Ruby のコードですから、Ruby のコード
|は地のコードにしておきたいという気持ちがあります。

これが気になったので、block を(main にではなく)直接 instance に
渡す方法を ruby-list で質問したわけですが、今の仕様では私の期待した
様な方法はないようです。
(必要もないのにわざわざ文字列を block に渡しているのは、本当は
文字列ではなく block だと言うことを示すためです。)
教えて頂いた方法ですが、上記の理由(block 内変数の scope の問題)で
期待したものとは違います。
ただ

|def (Power = {}).[]( x )
|    super || Power[x] = Sequence.new([1]) {|seq, n| x * seq[n-1] }
|end

の様な場合、 block 内の x が dummy でないことはそれほど問題にはならない
(x の scope は上記の script 内に限られる)ので、この点は妥協するとしても

|Prime = Sequence.new([2,3], & Object.new.instance_eval{
|                        def sieve(seq, n)
|                          m = seq[n - 1] + 2
|                          m += 2 while seq.find{|k|
|                            break if k * k > m
|                            m % k == 0
|                          }
|                          m
|                        end
|                        self}.method(:sieve))

は複雑過ぎる様に思います。

Prime =Sequence.new([2,3]){"|n|
  m=self[n-1]+2
  m+=2 while self.find{|k| break if k*k>m; m%k==0}
  m "}

で充分な気がします。
私の不満は、上の例の「"」が目障りということだけですので、
block を (main にではなく)直接 instance に渡す method が
将来提供されることを期待して今のままにしておきます。

すべての data が Object である筈の Ruby で block 自体は Object でない
のが柔軟性を無くしている様な気がするんですが。
(これは素人のたわごとと思って聞き流して下さい。)


|もう一つ原理的な問題ですが、ここでは収束の判定に数列の隣り合った値の差を使っ
|てますね。平方根をニュートン法で求めるならこれでもまずまずだと思いますが、一
|般的にはまずいです。

これは収束の判定をしているわけではありません。そんな事はできるわけが
ありません。
誤差の判定をしているわけでもありません。
収斂の判定も誤差の判定も program を書く人間の頭脳に任せるより他に
仕様が無いと思います。

出力の際の誤差の判定を正確にしたい時は、誤差項の Sequence を別に用意
することにすればどうでしょう。

次の mail で修正追加した script を送りますので御検討下さい。
実数の class を作るのは、もっとちゃんとした物ができるまで遠慮することに
して Sequence を使って実数を表すしくみを用意することにしました。
実数 class の候補を色々用意しておいて、その中から一つ選んで
alias Real Sequence
とできると便利だと思いますが、class 名の alias は無いみたいですね。
整数列を実数の小数表現とみなす方法の実数 class も考えていますが、
現在は中断しています。
実数とその演算を扱うことができる仕組みを持っている言語は Ruby 以外に
あまり無いと思うので、実数の class を作ってみることは意義があると思う
のですが如何でしょう?