An enumerator is something that knows how to generate a list and an iteratee is something that does one step in processing another piece of the big list. E.g. to sum up all elements of a list, we do Then foldl is the enumerator and ((+),0) is the iteratee. Clearly the function that sums the current element with the accumulator, (+), doesn't know or care from which collection the elements are comin