- **💭 写在前面:**本章我们将对函数式语言的讲解进行收尾,分解一下之前讲的 let-in 示例。然后讨论一下谁在使用动态作用域。
目录
[0x00 let-in 示例的分解](#0x00 let-in 示例的分解)
[0x01 谁使用动态作用域?](#0x01 谁使用动态作用域?)
0x00 let-in 示例的分解
让我们详细检查这个示例的评估步骤,回忆一下 let-in 语义的推理规则:
cs
let x = 10 in
let y =
let x = 1 in
let z = 2 in
x + z
in
x + y
0x01 谁使用动态作用域?
在 C 语言中,宏函数可能是现代语言中唯一类似于动态作用域的特性。
当然,宏展开并不完全等同于函数调用 (它只是简单的重写程序) ,
但它具有类似的效果,在以下实例中,a 将变成 25 或 36:
cs
int n = 10;
#define add_n(x) (x + n)
int main(void) {
int a;
if (...) { int n = 20; a = add_n(5); }
else {
int n = 30; a = add_n(6);
}
}
cpp
📌 [ 笔者 ] 王亦优
📃 [ 更新 ] 2024.6.13
❌ [ 勘误 ] /* 暂无 */
📜 [ 声明 ] 由于作者水平有限,本文有错误和不准确之处在所难免,
本人也很想知道这些错误,恳望读者批评指正!
|----------------------------------------------------------------------------|
| 📜 参考资料 Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. . |