From: Dan Doel Date: 2004-04-07T16:36:50+09:00 Subject: Re: deciding between ruby and python No, his point is that you can't zip two such objects together. You need at least one explicit iterator. You can define #zip for Fib something like this: class Fib def zip(iterable) each do |elem| yield elem, iterable.next end end end Or some similar pattern. However, Fib needs to provide a #next for this to work. The only explicitly iterable built-in class in Ruby is Array, so the default #zip (for Enumerable) converts its arguments to arrays. This is inconvenient when that would require generating an infinite array. :) It's possible to make things that will zip lazily in Ruby, it's just not possible with or as convenient as the implicit iterators that are common, and it's not as convenient as some other languages make it (Haskell, for example). - Dan