From: Trans Date: 2005-09-07T19:26:30+09:00 Subject: Re: memoize >From Nano Methods (thanks to Robert Feldt) $MEMOIZE_CACHE = Hash.new class Module def memoize(*meths) meths.each do |meth| mc = $MEMOIZE_CACHE[meth] = Hash.new old = instance_method(meth) new = proc do |*args| if mc.has_key? args mc[args] else mc[args] = old.bind(self).call(*args) end end send(:define_method, meth, &new) end end end (I'm doubtful of supporting an instance version.) T.