Scheme中具有可变数量参数的流和过程

时间:2015-04-21 18:57:21

标签: dictionary stream scheme r5rs

我正在尝试创建一个流版本的map,它将可变数量的流作为参数。我遇到的问题是我希望它处理各种大小的流,并且当其中一个为空时它会终止。如果我正在处理列表而不是流,我会这样做:

if (member? '() args)
   '()

但是,由于每次实现整个流,我猜它会失败的目的?我似乎无法想出任何其他方法来检查其中一个流是否为空而不是像这样。

1 个答案:

答案 0 :(得分:0)

流版本和普通版本之间的主要区别在于您需要使用stream-cons等。您仍然可以拥有流列表而不是列表列表,以便您可以编写小支票:

(if (memq stream-null args)
    stream-null
    (stream-cons <??> <??>))

实现了流,因为args是一个流列表。因此,检查每个流是否为空流,这是一个非常简单的eq?测试(hench我将其更改为memq