编程中的求值顺序、惰性求值与 I/O 处理
1. 确定性有限自动机(DFA)示例
首先来看一个确定性有限自动机(DFA)的例子,该 DFA 用于接受包含偶数个 a 和偶数个 b 的字符串。以下是其 OCaml 数据结构表示:
let a_b_even_dfa : char dfa =
{ current_state = 0;
transition_function =
[ (0, 'a', 2); (0, 'b', 1); (1, 'a', 3); (1, 'b', 0);
(2, 'a', 0); (2, 'b', 3); (3, 'a', 1); (3, 'b', 2) ];
final_states = [0];
};;
这个 DFA 通过状态转换函数和最终状态来判断输入字符串是否符合要求。
2. 求值顺序回顾
在编程中,许多表达式的子组件可以按多种顺序求值。主要有两种求值顺序:
- 应用序求值(Applicative-order evaluation) :在将函数参数传递给函数之前先对其进行求值。
- 正则序求值(Normal-order evaluation) :将未求值的参数传递给函数。
像 Scheme 和 OCaml 这样的语言在大多数情况下使用应用序求值,而正则序求值通常出现在宏和按名传递参数的情况中。
超级会员免费看
订阅专栏 解锁全文
745

被折叠的 条评论
为什么被折叠?



