时间旅行的故事

译自 A Time-Travel Story。除非特殊声明,下文中「我」指原文作者凤凰院██ Oleg Kiselyov。 导言 这是一个真实的故事,有据可查,我也被卷入其中。故事讲述了有关回到过去然后做出不同选择的经历。但出乎意料的是,一件隐私,一件被认为绝对安全的秘密被曝光了。 时间旅行的故事通常以「改变过去最终了造成预料之外的结果」为题,这个故事也不例外:穿越时空意外地揭露了一个肮脏的诡计,一项瞒天过海的暗箱操作,然而……言归正传,我们开始吧。 某天,我收到了来自一位 Hansei 用户的消息:这位用户的概率程序给出了明显错误的结果。Hansei 是一个 OCaml 语言编写的概率编程库,它的工作原理是:通过不断地回到过去做出不同选择从而创造新的世界线,并统计潜在的世界线的历史记录。这位用户最终发现库函数 List.map 是罪魁祸首:当他使用自己写的 map 函数时,问题就消失了。我感到很困惑,列表的 map 函数应该很简单,不可能出错。用户还提到了他用了 Batteries1,这是一种 OCaml 标准库的替代品。我亲自查看 Batteries 库源码之后发现了这个…… 版本 当前版本为 2014 年 9 月版 引用资料 Why List.map does not be implemented 2014 年 9 月 29 日至 10 月 1 日间在 Caml-list 邮件列表上讨论的主题 HANSEI: Embedded Probabilistic Programming Hayo Thielecke: Using a Continuation Twice and Its Implications for the Expressive Power of call/cc...

March 29, 2024 · 阅卜录 · Public Domain