【问题标题】:Streams and procedures with variable number of arguments in SchemeScheme中具有可变数量参数的流和过程
【发布时间】:2015-04-21 18:57:20
【问题描述】:

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

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

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

【问题讨论】:

  • 你使用的是什么实现方式?
  • 您可能会喜欢SRFI-41,它描述了地图的流版本以及许多其他内容。

标签: dictionary stream scheme r5rs


【解决方案1】:

流版和普通版的主要区别在于你需要使用stream-cons等。你仍然可以有一个流列表而不是列表列表,这样你的小检查就可以写了:

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

它确实具体化流,因为args 是流的列表。因此,每个流都被检查为空流,这是一个非常简单的eq? 测试(我把它改成了memq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2014-06-02
    • 2023-03-12
    • 1970-01-01
    • 2011-12-24
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多