Performance 方案中流的效率

Performance 方案中流的效率,performance,stream,scheme,lisp,racket,Performance,Stream,Scheme,Lisp,Racket,据我所知,在大型程序中使用流比在DrRacket中使用普通的lisp要有效得多。那么,为什么在DrRacket中默认的求值不是惰性求值呢?我编写并放置了一个计时器程序,用于计算完成工作所需的时间,在每个复杂的程序中,惰性求值要快得多。AFAIK使用在进行排序之类的操作时,流是对循环的浪费,因为您需要完成排序才能知道第一个元素。如果您有像排序一样工作的任务,因此您需要评估整个集合,那么您最终将使用比没有流更多的时间。原因是整个河流系统既有成本也有效益 流的好处是,您可以并行地进行计算,这样程序就不

据我所知,在大型程序中使用流比在DrRacket中使用普通的lisp要有效得多。那么,为什么在DrRacket中默认的求值不是惰性求值呢?我编写并放置了一个计时器程序,用于计算完成工作所需的时间,在每个复杂的程序中,惰性求值要快得多。

AFAIK使用在进行排序之类的操作时,流是对循环的浪费,因为您需要完成排序才能知道第一个元素。如果您有像排序一样工作的任务,因此您需要评估整个集合,那么您最终将使用比没有流更多的时间。原因是整个河流系统既有成本也有效益

流的好处是,您可以并行地进行计算,这样程序就不需要在处理第一个元素之前执行整个循环。如果您有n层处理流,那么当您的程序退出并且所有其他层还没有为您提供全部服务时,您将受益匪浅

DrRacket不是一种语言,而是一种IDE。Racket既是一种语言(
#!Racket
作为源代码的第一行),也是实现它的实现的名称

球拍支持
#!lazy
,这是Racket的懒惰版本。基本上,任何东西都像溪流一样工作,无处不在。您将获得相同的收益和成本

上述语言都不是Scheme,而是
#!racket
基于并且是
#的超集!r5rs
。从那以后你就有了
#!r6rs和新的
#!r7rs
。没有一份官方的计划报告是懒惰的。原因是它的前一个版本很急切,让它懒惰会彻底改变语言,破坏所有向后兼容性


1975年方案的创新是词汇闭包。在后来的一份报告中,创建者根据需要进行了延迟评估(通过实施
delay
force
)。其他语言,如Haskell,从一开始就是懒惰的,它们有一个更高级的编译器来不断折叠并使代码简洁

AFAIK在执行排序之类的操作时使用流是对循环的浪费,因为您需要完成排序才能知道第一个元素。如果您有像排序一样工作的任务,因此您需要评估整个集合,那么您最终将使用比没有流更多的时间。原因是整个河流系统既有成本也有效益

流的好处是,您可以并行地进行计算,这样程序就不需要在处理第一个元素之前执行整个循环。如果您有n层处理流,那么当您的程序退出并且所有其他层还没有为您提供全部服务时,您将受益匪浅

DrRacket不是一种语言,而是一种IDE。Racket既是一种语言(
#!Racket
作为源代码的第一行),也是实现它的实现的名称

球拍支持
#!lazy
,这是Racket的懒惰版本。基本上,任何东西都像溪流一样工作,无处不在。您将获得相同的收益和成本

上述语言都不是Scheme,而是
#!racket
基于并且是
#的超集!r5rs
。从那以后你就有了
#!r6rs和新的
#!r7rs
。没有一份官方的计划报告是懒惰的。原因是它的前一个版本很急切,让它懒惰会彻底改变语言,破坏所有向后兼容性


1975年方案的创新是词汇闭包。在后来的一份报告中,创建者根据需要进行了延迟评估(通过实施
delay
force
)。其他语言,如Haskell,从一开始就是懒惰的,它们有一个更高级的编译器来不断折叠并使代码简洁

AFAIK在执行排序之类的操作时使用流是对循环的浪费,因为您需要完成排序才能知道第一个元素。如果您有像排序一样工作的任务,因此您需要评估整个集合,那么您最终将使用比没有流更多的时间。原因是整个河流系统既有成本也有效益

流的好处是,您可以并行地进行计算,这样程序就不需要在处理第一个元素之前执行整个循环。如果您有n层处理流,那么当您的程序退出并且所有其他层还没有为您提供全部服务时,您将受益匪浅

DrRacket不是一种语言,而是一种IDE。Racket既是一种语言(
#!Racket
作为源代码的第一行),也是实现它的实现的名称

球拍支持
#!lazy
,这是Racket的懒惰版本。基本上,任何东西都像溪流一样工作,无处不在。您将获得相同的收益和成本

上述语言都不是Scheme,而是
#!racket
基于并且是
#的超集!r5rs
。从那以后你就有了
#!r6rs和新的
#!r7rs
。没有一份官方的计划报告是懒惰的。原因是它的前一个版本很急切,让它懒惰会彻底改变语言,破坏所有向后兼容性


1975年方案的创新是词汇闭包。在后来的一份报告中,创建者根据需要进行了延迟评估(通过实施
delay
force
)。其他语言,如Haskell,从一开始就是懒惰的,它们有一个更高级的编译器来不断折叠并使代码简洁

AFAIK在执行排序之类的操作时使用流是对循环的浪费,因为您需要完成排序才能知道第一个元素。如果您的任务像排序一样工作,因此您需要评估整个集合,最终将使用