【PL理论】(23) 函数式语言:let-in 示例的分解 | 谁在使用动态作用域?

  • **💭 写在前面:**本章我们将对函数式语言的讲解进行收尾,分解一下之前讲的 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]. []. . |

相关推荐
柠檬叶子C3 个月前
【PL理论深化】(2) 语法分析 (Syntax) | 编程语言的语法结构:文法 | 语义结构 (Sematics)
pl·pl理论·编程语言理论·程序语言理论
柠檬叶子C3 个月前
【PL理论】(33) 类型系统:推导树证明 φ ⊢ e∶t | 继续定义关系:γ ⊢ e∶t
pl·pl理论·编程语言理论·程序语言理论