![]() |
1
7
在实践中
你是对的。在这种情况下
一个细微的区别(实际上并不重要)是:在原始代码中,
如果
但在理论上另一种可以看出差异的方法是,如果你“提前”准备阅读动作,而不是当场创建:
使用此代码,原始
虽然表面上看这是随机的,但实际上它说明了程序设计中的一个重要考虑因素:
评价
和
处决
.简单地说,“评估”可以理解为“为工作做准备”,而“执行”可以理解为“实际做工作”。在我上面的代码片段中
很好地理解这种差异可以导致更好的程序设计。例如,当保证评估与执行分离时,可以在不改变程序含义的情况下对其进行优化、缓存或插入指令等。在Haskell这样的语言中,语言的设计保证了计算和执行的分离,编译器获得了前所未有的优化自由,从而产生了更快的二进制代码。 虽然我没有读过你提到的那本书,但我猜这个例子的目的是为了证明这种差异,因此,虽然推迟计算没有实际意义,但可能有教育意义。 |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |