为什么stream cons的结果不是stream empty的有效输入?吵闹

为什么stream cons的结果不是stream empty的有效输入?吵闹,stream,racket,Stream,Racket,当我运行以下代码时,我得到指示的错误消息。如果能帮助我理解为什么streamcons显然不会产生流为空的结果,我将不胜感激?可以处理。谢谢 > (stream-empty? (stream-cons 0 empty-stream)) . . stream-empty?: contract violation expected: stream? given: '(0 . #<promise:unsaved-editor:14:46>) >(流为空?(流cons 0空流)

当我运行以下代码时,我得到指示的错误消息。如果能帮助我理解为什么streamcons显然不会产生流为空的结果,我将不胜感激?可以处理。谢谢

> (stream-empty? (stream-cons 0 empty-stream))
. . stream-empty?: contract violation
  expected: stream?
  given: '(0 . #<promise:unsaved-editor:14:46>)
>(流为空?(流cons 0空流))
. . 流为空?:违反合同
期望:流?
给定:'(0.#)
正如前面提到的,您定义了自己版本的
流cons
。此版本的
stream cons
生成与球拍流不兼容的类流对象。(也就是说,
stream?
为您的人造流返回false。)


如果你想创建你自己的人造流,你需要创建你自己的
流空?
流?
,以及其他与流相关的程序,这些程序与你的流而不是标准的拍子流一起工作。

对我来说很好(收益率
#f
)。你用什么语言?哪个版本的球拍?我也在使用DrRacket 6.2.1Me<代码>#lang racket。我没有进行导入(需要racket/stream),但没有生成消息wrt undefined。通过导入,它可以工作。谢谢。我没有使用任何
导入
。我的评论有误导性,很抱歉。我没有定义我自己的流cons。@RussAbbott您是否包含任何重新定义它的模块?您可能希望将您的代码发布在摘要中并链接到此处,因为错误消息确实暗示它以某种方式被重新定义。我希望我保留它。这只是一堆暂时的实验代码。