Francis Girard <[EMAIL PROTECTED]> wrote: > Thank you Nick and Steven for the idea of a more generic imerge.
You are welcome :-) [It came to me while walking the children to school!] [snip] > class IteratorDeiterator: > def __init__(self, iterator): > self._iterator = iterator.__iter__() > self._firstVal = None ## Avoid consuming if not requested from outside > ## Works only if iterator itself can't return None You can use a sentinel here if you want to avoid the "can't return None" limitation. For a sentinel you need an object your iterator couldn't possibly return. You can make one up, eg self._sentinel = object() self._firstVal = self._sentinel Or you could use self (but I'm not 100% sure that your recursive functions wouldn't return it!) > def __iter__(self): return self > > def next(self): > valReturn = self._firstVal > if valReturn is None: and if valReturn is self._sentinel: > valReturn = self._iterator.next() > self._firstVal = None self._firstVal = self._sentinel etc.. [snip more code] Thanks for some more examples of fp-style code. I find it hard to get my head round so its been good exercise! -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list