正式地说:为什么你不能为 Racket 流编写一个流反向函数,就像你可以为列表编写一个一样?
Formally speaking: why you cannot write a stream-reverse function for a Racket stream just like you can write one for lists?
Racket 提供了一个内置函数来反转列表,称为reverse
。此函数使用列表(至少是适当的列表)的结尾是 null
(空列表)。
另一方面,根据定义,流 没有 结束。实际上,streams 是一种数据结构,完全是为 infinite 数据建模而创建的。
因此,没有这种方法来构建流反向函数。
以上论证是否足以回答问题?
我错过了什么吗?
我觉得太随意了。
提前致谢。
虽然您可以创建无限流,但并非所有流都需要是无限的。例如。 (stream 1 2 3 4)
将生成一个延迟执行 4 个元素的流,并且它是可逆的。
您可以创建 stream-reverse
,但它不适用于无限列表,就像 reverse
和 sort
不适用于循环列表,仅适用于适当的列表。
Racket 提供了一个内置函数来反转列表,称为reverse
。此函数使用列表(至少是适当的列表)的结尾是 null
(空列表)。
另一方面,根据定义,流 没有 结束。实际上,streams 是一种数据结构,完全是为 infinite 数据建模而创建的。
因此,没有这种方法来构建流反向函数。
以上论证是否足以回答问题? 我错过了什么吗?
我觉得太随意了。
提前致谢。
虽然您可以创建无限流,但并非所有流都需要是无限的。例如。 (stream 1 2 3 4)
将生成一个延迟执行 4 个元素的流,并且它是可逆的。
您可以创建 stream-reverse
,但它不适用于无限列表,就像 reverse
和 sort
不适用于循环列表,仅适用于适当的列表。