At Thu, 18 Jul 2002 21:28:41 +0900, > こういうことが出来るというのは理論的には大変興味がありますが、流石に実際に > 採用する気にはなれません。 それでは,再帰用のクラスを別に作ると言うのはどうでしょうか? または,再帰用にデフォルトで自分自身を@lambdaに渡すというの でも良いと思います. class Sequence def initialize (list =[], *parameter, &block) @list=list @para=parameter @lambda=block end def [](n) @list[n] || @list[n] = @lambda.call(n,*@para) end end class RecSequence < Sequence def [](n) @list[n] || @list[n] = @lambda.call(self,n,*@para) end end Fact=RecSequence.new([1]){|f,n| n * f[n-1]} p Fact p Fact[4] -- Takaaki Tateishi <ttate / kt.jaist.ac.jp>