13.2函数式语言的编译简介 13.2.2编译函数 表达式在不同的上下文中会编译成不同的指令序列 P:编译完整的程序表达式。结果在堆中,栈顶 有一指针指向它 B:结果必须是基值并且存在栈上 V:结果在堆中,栈顶有一指针指向它。 这是计 算的正常情况 C:结果必须是被编译表达式的闭包。函数的变 元和递归等式的右部总是这种情况
13.2函数式语言的编译简介 13.2.2 编译函数 表达式在不同的上下文中会编译成不同的指令序列 – P:编译完整的程序表达式。结果在堆中,栈顶 有一指针指向它 – B:结果必须是基值并且存在栈上 – V:结果在堆中,栈顶有一指针指向它。这是计 算的正常情况 – C:结果必须是被编译表达式的闭包。函数的变 元和递归等式的右部总是这种情况
13.2函数式语言的编译简介 13.2.3环境与约束 一名字的定义性出现总是关联到一个闭包 1、一个等式被编译时,其左部的名字总是关联到 其右部的闭包 2、入抽象中的约束名字是在函数应用时关联到该 次应用的变元的闭包 名字引用性出现的编译:获得相关联的定义性出 现的值 符号表在此称为编译环境 当函数抽象的体或letrec中的表达式开始编译时, 新引入的局部变量必须被加入编译环境
13.2函数式语言的编译简介 13.2.3 环境与约束 – 名字的定义性出现总是关联到一个闭包 1、一个等式被编译时,其左部的名字总是关联到 其右部的闭包 2、抽象中的约束名字是在函数应用时关联到该 次应用的变元的闭包 – 名字引用性出现的编译:获得相关联的定义性出 现的值 – 符号表在此称为编译环境 – 当函数抽象的体或letrec中的表达式开始编译时, 新引入的局部变量必须被加入编译环境