diff --git a/toolz/functoolz.py b/toolz/functoolz.py
index 2c75d3a4..9cd865ab 100644
--- a/toolz/functoolz.py
+++ b/toolz/functoolz.py
@@ -495,6 +495,10 @@ def __getstate__(self):
def __setstate__(self, state):
self.first, self.funcs = state
+ def __iter__(self):
+ for f in reversed(self.funcs): yield f
+ yield self.first
+
@instanceproperty(classval=__doc__)
def __doc__(self):
def composed_doc(*fs):
@@ -509,7 +513,7 @@ def composed_doc(*fs):
try:
return (
'lambda *args, **kwargs: ' +
- composed_doc(*reversed((self.first,) + self.funcs))
+ composed_doc(*self)
)
except AttributeError:
# One of our callables does not have a `__name__`, whatever.
@@ -519,14 +523,14 @@ def composed_doc(*fs):
def __name__(self):
try:
return '_of_'.join(
- (f.__name__ for f in reversed((self.first,) + self.funcs))
+ (f.__name__ for f in self)
)
except AttributeError:
return type(self).__name__
def __repr__(self):
return '{.__class__.__name__}{!r}'.format(
- self, tuple(reversed((self.first, ) + self.funcs)))
+ self, tuple(self))
def __eq__(self, other):
if isinstance(other, Compose):