From: "trans. (T. Onoma)" Date: 2004-10-14T03:13:53+09:00 Subject: Re: Putting some code out to DRY |        seed = @start |        whatever = lambda do |          yield(seed) |          @skip.times { seed = seed.succ } |          return if @halt.call(seed) if @halt |        end |        @step ? @step.times(&whatever) : loop(&whatever) |      end FYI: I ended up using this lambda approach after all. Many thanks to those who suggested it. I occurs to me that this also has to do with 1st class methods. An (as of yet) untested possibility: ( @step ? @step.method(:times) : method(:loop) ).call proc do      yield(seed)      @skip.times { seed = seed.succ }      return if @halt.call(seed) if @halt end T.