「：This is untyped closure conversion. 
I have prepared groundwork for typed closure conversion, but I 
have not yet studied it.
Part of the reason is that type annotation and typed ANF conversion take 
too long to execute.
：」

寻观「标准库」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。

。
寻观「编译器核心」之「编译数据」之「编译配置」之「编译期输出」之书。
寻观「编译器核心」之「编译数据」之「编译配置」之「全局配置」之书。

寻观「编译器核心」之「编译步骤」之「闭包转换」之「函数提升」之书。

寻观「编译器核心」之「编译步骤」之「总体过程」之「编译过程工具」之书。
寻观「拓展库」之「顺序标识符」之「顺序标识符」之书。

寻观「编译器核心」之「编译步骤」之「求值正则变换」之「正则形式统一变换」之书。

寻观「编译器核心」之「编译步骤」之「闭包转换」之「全局结构变量储存变换」之书。

寻观「编译器核心」之「编译步骤」之「优化」之「基础工具」之「表达式带定义操作」之书。

「前闭包转换」乃化「表达式」而「表达式」也。
「前闭包转换」者会「式」而
  虑「递归」者「前闭包转换」而
  虑「无」者「编译调试打印行」于『clo_conv』于（会「无」而『正在编译：』附（「表达式表示」于「式」））而
  鉴「式」而
    有（「式节点」于「函数调用」于（「缀」于（「式节点」于（「函数引用节点」于「函数名」）于「罄」） 「：函数引用式节点发生在闭包转换及提升前，判定不需要闭包：」
        于（（「列」【（「式节点」于（「参数节点」于（「多参数形」于「个数」））于「参数」）】））））
        则（虑「无」者
              「编译调试打印行」于
              『clo_conv』
              于（会「无」而『选择分支1』）而
            「分组函数调用式」
            于（「多参数形」于「个数」）
            于（「式节点」于（「函数引用节点」于「函数名」）于「罄」）
            于（（「态射」）于「参数」于「递归」））
    或有（「式节点」于「函数调用」于（「缀」于（「式节点」于（「函数引用节点」于「函数名」）于「罄」） 「：函数引用式节点发生在闭包转换及提升前，判定不需要闭包：」
        于（（「列」【（「式节点」于（「参数节点」于（「尾多参数形」于「个数」））于「参数」）】））））
        则（虑「无」者
              「编译调试打印行」于
              『clo_conv』
              于（会「无」而『选择分支1.2』）而
            「分组函数调用式」
            于（「尾多参数形」于「个数」）
            于（「式节点」于（「函数引用节点」于「函数名」）于「罄」）
            于（（「态射」）于「参数」于「递归」））
    或有（「式节点」于「函数调用」于（（「列」【「函数」，（「式节点」于（「参数节点」于（「多参数形」于「个数」））于「参数」）】）））则（虑「无」者「编译调试打印行」于『clo_conv』于（会「无」而『选择分支2』）而
                  「式节点」于「内联虑」于（（「列」【（「递归」于「函数」），（「构造抽象」于『闭包函数』于（会
                  「闭包函数名」而
                  「分组函数调用式」于（「多参数形」于（「加」于「个数」于「一」））
                    于（「式节点」于（「元组解构节点」于「零」）于（（「列」【（「自由变量」于「闭包函数名」）】）））
                    于（「缀」于（「自由变量」于「闭包函数名」）于（（「态射」）于「参数」于「递归」））））】）））
    或有（「式节点」于「函数调用」于（（「列」【「函数」，（「式节点」于（「参数节点」于（「尾多参数形」于「个数」））于「参数」）】）））则（虑「无」者「编译调试打印行」于『clo_conv』于（会「无」而『选择分支3』）而
                  「式节点」于「内联虑」于（（「列」【（「递归」于「函数」），（「构造抽象」于『闭包函数』于（会
                  「闭包函数名」而
                  「分组函数调用式」于（「尾多参数形」于（「加」于「个数」于「一」））
                    于（「式节点」于（「元组解构节点」于「零」）于（（「列」【（「自由变量」于「闭包函数名」）】）））
                    于（「缀」于（「自由变量」于「闭包函数名」）于（（「态射」）于「参数」于「递归」））））】）））
    或有（「式节点」于（「函数全局声明节点」于「函数名」）于（（「列」【（「式节点」于（「拉姆达抽象」于（「多参数形」于「个数」））于（（「列」【「绑定拉体」】）））】）
      ））则（ 「：全局声明节点同样不需要闭包转换：」
          虑「无」者「编译调试打印行」于『clo_conv』于（会「无」而『选择分支4』）而
          （「式节点」于（「函数全局声明节点」于「函数名」）
            于（（「列」【（「式节点」于（「拉姆达抽象」于（「多参数形」于「个数」））
            于（（「列」【（「递归」于「绑定拉体」）】）））】））））
    或有（「式节点」于（「拉姆达抽象」于（「多参数形」于「个数」））于（（「列」【「绑定拉体」】）））
    则（虑「无」者
          「编译调试打印行」于
          『clo_conv』
          于（会「无」而『选择分支5』）而
        虑「所有自由变量」者（（「移除重复」授以「字符串」）于「串相等」于（「读取式自由变量」于「绑定拉体」））
        而
        虑「闭包名」者「下个字符序数」于『函数闭包』而
        虑「新式」者（「式节点」
          于（「元组构造节点」）
          于（「缀」
          于（「式节点」
          于（「拉姆达抽象」于（「多参数形」于（「加」于「个数」于「一」）））
          于（（「列」【（「进行抽象」于「闭包名」
          于（「多绑定递归」于「个数」于「绑定拉体」
          于（会「拉体」而
            虑「引用式」者（「新引用」授以「表达式」）
            于（「递归」于「拉体」）而
            虑「无」者（「打表」授以「有」）
            于（「长度」于「所有自由变量」）
            于（会「序数」而「写引用」于「引用式」
            于（「式有名替换」
            于（「式节点」
            于（「元组解构节点」于（「加」于「序数」于「一」））
            于（（「列」【（「式节点」
            于（「自由变量标注节点」于（「第N个」于「序数」于「所有自由变量」））
            于（（「列」【（「自由变量」于「闭包名」）】）））】）））
            于（「第N个」于「序数」于「所有自由变量」）
            于（「读引用」于「引用式」）））而（（「读引用」于「引用式」）））））】）））
            于（（「态射」）于「所有自由变量」于「自由变量」）））而
        「新式」
    ）
    或有（（「式节点」于（「函数引用节点」于「函数名」）于「罄」））则
      （「发生事故」于『函数引用节点不可以单独出现，必须出现在函数引用的函数位置：』附（「表达式表示」于「式」））
    或有「其他」则（「表达式统一操作」于「递归」于「式」）
也。
