豊福です。

  あまりにダサダサだったので書き直しました。

def fsort(f, x)
  h = x.head; t = x.tail
  List([h, h]){fmerge(f, t.map{|b| [h, b]}, fsort(f, t))}
end

def goldbach(f)
  fsort(f, sieve(integers(2)).tail)
end

goldbach(proc{|v| v[0] + v[1]}).take(100).each do |x|
  p [x[0]+x[1], x]
end
---
                        豊福
                        ttoyofukujp / yahoo.co.jp