「：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个」于「序数」于「所有自由变量」）
                                    于（「读引用」于「引用式」）））
                            而
                            （（「读引用」于「引用式」）））））
                    】）））
                    于（（「态射」）于「所有自由变量」于「自由变量」）））
            而
            「新式」
    ）
    或有（（「式节点」于（「函数引用节点」于「函数名」）于「罄」））则
      （「发生事故」于『函数引用节点不可以单独出现，必须出现在函数引用的函数位置：』附（「表达式表示」于「式」））
    或有「其他」则（「表达式统一操作」于「递归」于「式」）
也。
