弾さんのfor(1..1e10) と Iteratorを読んで、make_rangeをRubyで書いてみました。 def make_range(now, limit) lambda { now <= limit ? (now += 1) - 1 : nil } end sum = 0 # r = make_range(1, 1e7) r = make_range(1, 1000000) # 1e7だと終わらなかったので、1e6にしました while x = r.call sum += x end puts sum はじめ、now += 1がpost incrementでないことに気づかず、計算が合わなくて焦りました。 参照: 仮想的な無限列 追記:誤解を招くような書き方でしたが、1e7だと終わらなかったので、1e6にしたのでした。kmdsbngさん、ごめんなさい。 追記:きゃあ。やろうとし