当前位置:  开发笔记 > 人工智能 > 正文

聪明地使用严格的评估在哪里?

如何解决《聪明地使用严格的评估在哪里?》经验,为你挑选了2个好方法。

似乎有很多聪明的事情都是用懒惰评估的语言完成的,这些例子在严格评估的环境中无法完成.例如,Haskell中的无限列表,或者用树中的最小值替换树中的每个元素.

是否有任何巧妙的事情用严格评估的语言完成的例子,用懒惰评估的语言不能轻易完成?



1> Norman Ramse..:

您可以使用急切(严格)语言而不是懒惰语言轻松完成的主要事项:

从源代码预测程序的时间和空间成本

允许副作用,包括可变数组的恒定时间更新,这使得更容易快速实现某些算法

在我看来,热切语言的主要好处是让代码以您想要的方式执行变得更加容易,并且很少有性能陷阱,其中代码的微小变化会导致性能的巨大变化.

话虽如此,总的来说我更喜欢在Haskell中编写复杂的东西.



2> porges..:

没有; 有一些你可以做的事情*懒惰评估(AKA正常顺序减少,或左外侧减少)你不能用严格的评估,但不是相反的方式.

这样做的原因是懒惰评估在某种程度上是评估的"最通用"方式,这被称为:

计算充分性定理:如果某些评估顺序终止并产生特定结果,则延迟评估也将终止并产生相同的结果.

*(请注意,我们不是在谈论图灵等效)

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有