func hailstone(n) { gather { while (n > 1) { take(n) n = (n.is_even ? n/2 : (3*n + 1)) } take(1) } }   if (__FILE__ == __MAIN__) { # true when not imported var seq = hailstone(27) say "hailstone(27) - #{seq.len} elements: #{seq.ft(0, 3)} [...] #{seq.ft(-4)}"   var n = 0 var max = 0 100_000.times { |i| var seq = hailstone(i) if (seq.len > max) { max = seq.len n = i } }   say "Longest sequence is for #{n}: #{max}" }