From: Just Another Victim of the Ambient Morality Date: 2007-11-29T01:55:00+09:00 Subject: Re: Ruby needs continuations... "MonkeeSage" wrote in message news:4f89dee4-b922-49ef-889f-e281e7ad0e8c@j44g2000hsj.googlegroups.com... > On Nov 28, 9:19 am, MonkeeSage wrote: >> ======== >> >> require 'generator' >> >> module Enumerable >> def izip(*enumerables) >> enumerables = [self] + enumerables >> generators = enumerables.map { | enum | >> Generator.new(enum) >> } >> while generators[0].next? >> result = generators.map { | gen | >> gen.next >> } >> yield result >> end >> end >> end >> >> [1,2,3].izip([4,5,6]) { | x, y | >> puts x, y >> >> } >> >> ======== >> >> NB. generator.rb says that generators are slow in 1.8. >> >> Regards, >> Jordan > > Ps. The SyncEnumerator class from generator does the same thing as > izip: > > SyncEnumerator.new([1,2,3], [4,5,6]).each { | x, y | > puts x, y > } Thank you, MonkeeSage, this is exactly what I'm looking for! It's interesting that generators are slow enough to warn users about its lack of speed! Do you know if it would be any faster implemented with continuations? I'm surprised it's so slow considering Ruby employs green threads...