正木です。
訂正です。

From: masaki <GEC01122 / nifty.ne.jp>
Subject: [ruby-dev:17725] Re: self in block
Date: Sat, 20 Jul 2002 13:31:16 +0900

> new の場合与えられた block はそのまま initialize に渡されます。
> 実際に block を解釈するのは initialize なので self は Proc の instance 
> になるというのが、私の認識ですが、間違っていたら指摘してください。

上の通りなら
Proc.new{|n| n==0 ? 1:n*self[n-1]}
の self は Proc class 自身を指すことになりそうですが、そうはならない所を
みると、 new の段階で context は決めているようです。ただ
"block を解釈するのは initialize"
が正しければ、
Proc.new{<n> n==0 ? 1:n*self[n-1]}
に対して、この段階で context を入れ換えることは可能な気がします。

instance_eval を使えば context の切替えは可能な筈なのですが、以前に
色々試してみたところ結局うまくいかず、諦めた記憶があります。