SICP学习笔记--求值策略 (Evaluation strategy) --应用次序 (Applicative order) vs 正常次序 (Normal order)
来源:互联网 发布:淘宝哪些卖大衣的好店 编辑:程序博客网 时间:2024/05/17 02:53
wiki:
严格求值 (Strict evaluation)
在“严格求值”中,给函数的实际参数总是在应用这个函数之前求值。
在邱奇编码下,算子的热情求值映射到了函数的严格求值;为此严格求值有时叫做“热情求值”。多数现存编程语言对函数使用严格求值。
应用次序 (Applicative order)
“应用次序”(或“最左最内”)求值称呼函数的实际参数按可归约表达式的后序遍历从左至右的求值的策略。不像传值调用,应用次序求值尽可能的在应用函数之前归约函数体内的项。
非严格求值 (Non-strict evaluation)
在“非严格求值”中,不求值给函数的实际参数,除非它们在函数体内实际上被用到了。
在邱奇编码下,算子的惰性求值映射到了函数的非严格求值;为此,非严格求值有时也叫做“惰性求值”。布尔表达式在很多语言中使用惰性求值;在这种上下文中它通常叫做短路求值。条件表达式也通常使用惰性求值,但出于不同的原因。
正常次序 (Normal order)
“正常次序”(或“最左最外”)求值是总是归约的最外可归约式,在求值函数的实际参数之前应用函数的求值策略。它不同于传名调用,传名调用不进入未应用的函数体内求值。
求以下代码输出:
(define (p) (p))(define (test x y) (if (= x 0) 0 y))(test 0 (p))
scheme中运行结果为无限循环:应用次序解析( test 0 ( p ) ), 在解析到(p)时,会把define的函数进行(p)进行替换,这样形成了一个无限循环
0 0
- SICP学习笔记--求值策略 (Evaluation strategy) --应用次序 (Applicative order) vs 正常次序 (Normal order)
- Normal Order and Applicative Order(收录)
- 深入理解JavaScript系列(19):求值策略(Evaluation strategy)
- 深入理解JavaScript系列(19):求值策略(Evaluation strategy)
- 深入理解JavaScript系列(19):求值策略(Evaluation strategy)
- 深入JavaScript(11)求值策略(Evaluation strategy)
- 深入理解JavaScript系列(19):求值策略(Evaluation strategy)
- 深入理解JavaScript系列(19):求值策略(Evaluation strategy)
- 1.9 求值次序与副作用
- C++求值次序与副作用
- Order of evaluation
- Order of Evaluation
- C# 关于控件的z-order(Z轴次序)属性(By dlm)
- C# 关于控件的z-order(Z轴次序)属性(By dlm)
- 103. Binary Tree Zigzag Level Order Traversal | 输出二叉树层次遍历次序
- 1003. Extended Normal Order Sort
- windows 编程的学习次序
- “次序”很重要
- 一条指令在cpu中的执行流程(理解CPU组成)
- linux文件属性
- jQuery获取Select选择的Text和Value:
- 贝叶斯分类算法及其概率论基础
- GLSL中in和uniform变量的使用
- SICP学习笔记--求值策略 (Evaluation strategy) --应用次序 (Applicative order) vs 正常次序 (Normal order)
- MyEclipse设置注释格式(转载)
- erlang程序优化点的总结
- 第八周上机实践项目——实现复数类中的运算符重载(1)
- -3+1
- php三维数组变二维数组
- HDU 1846 Brave Game(巴什博弈)
- 解析XML DOM
- Pro Android学习笔记(八三):了解Package(2):包签名过程