adapter API
adapter 包没有公开项。它是一个契约测试包:其白盒测试定义了一个小型的、下游风格的 AST,为其实现 @syntax.BindingSyntax,并检查泛型代换与泛型重写在一个不是 Term[T] 的 AST 上的行为与文档一致。
package "Luna-Flow/type_theory/adapter"
// Values
// Errors
// Types and methods
// Type aliases
// Traits
为适配你自己的 AST 而需实现的接口是 @syntax.BindingSyntax;随后你将获得的算法是 @syntax.generic_free_variables、@substitution.GenericSubstitution 和 @rewrite.generic_top_down_once。该契约在 adapter 设计中说明,adapter 教程则一步步构建一个适配器。
测试检查的内容
测试文件 src/adapter/poly_adapter_wbtest.mbt 使用一个包含四种节点的私有 AST:整数字面量(投影为 Opaque)、变量、n 元求和节点(投影为 Apply)以及作用域节点(投影为 Bind)。它检查
GenericSubstitution::apply_once同时且一趟完成代换:将 作用于 得到 ;- 代换保留其定义域之外的变量不变(部分求值);
generic_top_down_once在某个参数内部找到可约式,通过 trait 构造器重建父节点,并报告路径[ApplyArgument(0)]。