类型不是名词,是接口:从 A -> B 看科学概念为何需要‘翻译函数’
【锚点】这一篇只钉一个判断:【类型不是对象的内在本质,而是对象在组合中的可检验行为契约;科学概念的意义也主要由它与其他概念的可替换关系决定,而不是由某个“内部名词”决定】。
【显式】Church 的 λ 演算(1930s)里,A -> B 不是一个装着函数的集合,而是一条规则:【给定任意 A,必须产出 B】。判断一个项是否属于 A -> B,不靠查它的“本质”,而靠检查它能否通过组合测试:输入 a:A,归约后输出 b:B,且在不同上下文中可替换。【流程节点链路】:【项 t】→【类型签名 A -> B】→【组合输入 a:A】→【归约/求值】→【输出 b:B】→【类型检查通过】。
【隐式】这一步很像 Wittgenstein《哲学研究》(1953)对“名字对应内在对象”的反对:词的意义不是藏在词里的东西,而是它在语言游戏中的使用。若把 bank 放进 “river bank” 和 “open a bank”,它不是同一个隐藏实体在变,而是【语法/语义类型环境】要求不同:一个接地点/边界名词,一个接金融行动动词。【流程节点链路】:【词项】→【句法槽位】→【语义类型约束】→【可接受/不可接受替换】→【意义边界】。
【细微】但类型论比“用法”更硬的地方在于:它把可替换性变成可形式化的条件。Curry-Howard 对应把命题当作类型、证明当作程序:证明 A -> B 就是给出一个程序,它能消费 A 并返回 B。类型检查器因此像一个公共仲裁者,把“这算不算同一类东西”从私人直觉变成可重复检验。【流程节点链路】:【候选项】→【类型签名】→【归约规则】→【归一形/可观察行为】→【接受/拒绝】→【跨理论翻译】。
【极难发现】这里真正反直觉的是:【类型错误不是“东西坏了”,而是“承诺不匹配”】。它不必然说明对象不存在,只说明当前接口下无法安全组合。科学史上很多“概念冲突”也如此:牛顿力学里的“力”与广义相对论中“偏离测地线的加速度”不是谁更真实,而是它们在不同理论类型系统中承担不同签名——前者是轨迹方程中的输入,后者是几何连接中的可替换量。把旧概念直接塞进新理论,就像把 String 当 Int 用:不是词错了,是类型边界没声明。
【待验证点】如果概念是类型,那么科学革命究竟是【同一类型系统内的类型升级】,还是【跨类型系统的翻译协议】?当两个理论对同一现象给出不同签名,我们是否应该要求“翻译函数”而不是“正确名字”?







0 评论