Generating sequence that uses the previous outcome for the current I do not like to use while loops in Ruby. I was wondering how I can generate a "squared sequence" (e.g., squares the first input, then squares the outcome, etc.) in a more idiomatic Ruby way than this one:

value = 2
while value &lt; 10000
    puts value = value**2
end

# =&gt; 4
#    16
#    256
#    65536


I have a suspicion that there is a way/method to do this, but I do not know which one. I hope someone can point me in the right direction.
Using while would be idiomatic in almost any language. while is basically the way to iterate, uh, while a condition is true. Hence the name - it's practically plain English.

You can postfix the while and save a couple of lines, but that's about it

puts value = value**2 while value &lt; 10000


or use until if you want, but same difference

puts value = value**2 until value &gt;= 10000


If you were dealing with a fixed or known number of iterations, you could do something like

4.times.inject(2) do |memo, _|
  puts memo = memo ** 2
  memo
end


but the whole point here is really that you don't know the number of iterations.