From: Brian Candler Date: 2009-01-19T18:04:12+09:00 Subject: Re: A stream implementation for Ruby Robert Dober wrote: > Streams are lazily evaluated lists. Aside: it is also possible to make use of infinite enumerators in Ruby (i.e. a traditional 'each' method which yields an infinite number of values), and this may be sufficient in some applications. In order for this to be useful, you need to process chains of methods acting 'horizontally' instead of 'vertically'. The block form of Enumerator lets this be done natively in ruby 1.9: http://redmine.ruby-lang.org/issues/show/707 and with a little work, this can be made entirely transparent to map, select etc: http://redmine.ruby-lang.org/issues/show/708 It turns out to be very easy to implement the block form of Enumerator in ruby 1.8. I contributed an implementation of this to the Facets project: http://facets.rubyforge.org/git?p=facets.git;a=blob_plain;f=lib/lore/facets/enumerator.rb;hb=HEAD http://facets.rubyforge.org/git?p=facets.git;a=blob_plain;f=lib/more/facets/filter.rb;hb=HEAD Anyway, I just thought this was worth a mention. It's not as powerful as full lazy evaluation, although if you combine this with Generators I think it gets pretty close. Regards, Brian. -- Posted via http://www.ruby-forum.com/.