The power of Object#become: a lazy-evaluator 1 class LazyEvaluator < KernellessObject 2 def initialize(&block) 3 @p = block 4 end 5 6 def method_missing(*args, &block) 7 obj = @p.call 8 obj.become(self) # self.become doesn't exist 9 self.__send__(*args, &block) 10 end 11 end