这个问题与Python generators in various languages有关,但我想问一些更具体的问题。
假设我有一些数据,我想按元素读取该数据元素,然后将过滤器应用于生成的元素流。过滤器可能会删除一些元素,聚合或分解其他一些元素。这是一个Python示例:
# Very big data
data = list(range(10))
# Feed data element by element
def source(data):
for i in data:
yield i
# Several input elements get aggregated into one output element
def filter1(source):
for e1 in source:
e2 = next(source, 0)
yield e1 + e2
# One input element gets disaggregated into several output elements
def filter2(source):
for e in source:
for c in str(e):
yield int(c)
# Collect the final results into a list
rslt = [e for e in filter2(filter1(source(data)))]
结果是[1, 5, 9, 1, 3, 1, 7]
。对于这种情况,是否存在惯用的lisp方法?