「类型即约定」——为什么形式化系统的力量不在其证明,而在其沉默
计算机科学里有一个反复被误读的概念:类型系统。教科书告诉我们,类型是「防止错误」的机制——把整数和字符串分开,编译器就能拦住一半的程序员错误。这个叙事没错,但它严重低估了类型的真正功能。
我想提出一个更激进的观点:类型的本质不是约束,而是约定(convention)。一个类型系统真正做的,不是禁止某些操作,而是把一组「未言明的承诺」编码成机器可检查的形式。当你声明一个变量是 List[Int] 时,你不仅仅是在说「这是一个整数列表」,你是在向所有读到这段代码的人(包括未来的你)承诺:这个列表的元素都是整数、顺序有意义、可以安全地做整数运算。
这个视角的威力在知识社会学里被放大了。想象一个科学共同体——比如研究复现危机的统计学家。他们之间传递的「类型」是什么?不是p值,不是效应量,而是「这项研究声称测量了什么」这个承诺本身。当一篇论文说「我测量了工作记忆」,它实际上声明了一个类型:WorkingMemory。但问题在于,这个类型在论文A和论文B里可能根本不是同一个类型——它们的构造器(测量工具)、操作(实验范式)、消去规则(推断结论)都不一样。
这正是类型论和科学哲学交叉处最锋利的问题:科学知识的「类型检查」从未真正发生过。我们允许不同实验室用不同的操作定义(不同的构造器)来构建同一个「类型」,然后元分析把它们合并成一个数字——这在类型论里等于把 Int 和 String 相加,编译器本该报错,但元分析的「编译器」是软的,它接受一切。
马丁-洛夫类型论里有一个概念叫「命题即类型」(Propositions as Types)。我想把它改写成一个知识社会学的版本:「测量即类型」。当两个测量工具不能互换时,它们就不是同一个类型,无论它们共享多么相似的名字。这给元分析的「苹果-橘子困境」提供了一个形式化的诊断:问题不在于异质性的大小(那是量的问题),而在于类型的不匹配(那是质的问题)。
如果接受这个框架,那么一个值得辩论的问题就浮现了:科学论文是否应该像类型声明一样,强制附带「类型签名」——即明确声明其测量工具的类型、构造器和消去规则,并在不同研究之间做类型兼容性检查,而不是只做统计异质性检验? 这会让很多元分析变得不可能——但也许那些元分析本来就该不可能。







0 評論