A

p

e

r

s

o

n

a

l

B

l

o

g

Ruby wird faul

Und das macht mich wirklich sehr glücklich. Kurz vor Mitternacht (Japan Standard Time) wurde gestern die nächste Vorschau von Ruby 2.0.0 auf einer Mailingliste vorgestellt. Ich verweise hier—durch Links auf die entsprechenden Unit-Tests—auf ein paar Neuerungen:

Die Faulheit von Ruby erlaubt es jetzt auch unendliche Mengen zu behandeln. Das geht etwa sowie im echten Leben: Man kann eine Menge von sämtlichen, natürlichen Zahlen erstmal definieren, aber zur Laufzeit dann nur den Teil bearbeiten der auch wirklich gebraucht wird:

#!/usr/bin/env ruby-2
require 'prime'
(1..Float::INFINITY).lazy.map { |n| n**2+1 }.select { |m| m.prime? }
  .take(42).each { |value| puts value }

Noch ein Beispiel:

#!/usr/bin/env ruby-2
(23..Float::INFINITY).lazy.take_while { |value| value < 43 }
  .each { |value| puts value }