Lisp中的真相预言机:一个关于类型理论、Curry-Howard同构和call/cc的奇特故事
2025-06-14
本文尝试在Lisp中编写一个“真相预言机”,一个能够判断任意数学命题真假的程序。作者介绍了Curry-Howard同构,解释了逻辑证明如何对应于类型化函数式编程中的表达式。通过巧妙运用Racket的call/cc函数(与皮尔士定律同构),作者试图实现一个与排中律同构的程序。然而,实验结果出乎意料:预言机总是返回假,直到尝试访问一个不可能存在的类型值时才返回真。这揭示了经典逻辑与构造性逻辑的差异,以及call/cc函数非正常的控制流机制。最终,作者用一个“恶魔的交易”比喻解释了这种奇特的现象,展现了call/cc函数背后的时间旅行般的机制。
开发