如何用范畴理论描述期货?


Answers:


25

碰巧的是,我现在正在写一篇有关此的论文。IMO,考虑期货或承诺的一种好方法是根据时间逻辑的库里-霍华德对应关系。

基本上,期货背后的想法是,它是表示正在进行的计算的数据结构,您可以在其上进行同步。在时序逻辑而言,这是最终运营商。它具有单子结构: 其中操作产生一个过程立即返回其参数,和创建用于其等待一个新的进程 ' s值,将应用于该值,然后等待值返回。的ř é ü ř Ñ→交通b Ñ d→交通→交通 →交通 ř Ë ü ř ñ b Ñ ð一个˚F A

return:AAbind:(AB)AB
returnbindafB对于CommonJS的Promises / A提议称为monadic绑定操作then,而Scala 2.10仅为它提供了标准的monadic接口

双到最终运营商是总运营时序逻辑的,它说,在每一个瞬间,你会得到。当您从时态逻辑的Kripke语义(您仅对可证明性进行建模)传递到 -calculus 的类别语义(也对lambda项/证明进行建模)时,实际上有多种方法可以做到这一点。λAAAλ

您可以做的最简单的事情是取,理由是一旦拥有,便始终拥有它。这行得通,但IMO有点无聊。:)AAA

最自然(IMO)要做的是取,这使您可以在每个瞬间获得一个(可能不同的)。然后,您可以看到函数式反应式编程(FRP)的通俗风格(最早由Tarmo Uustalu和Varmo Vene提出)是带有期货的双重对单子风格。AAStreamAA

然而,他们建议的共声微积分尽管具有优雅性,但与使用流进行显式编程相比却造成了表达能力的严重损失,因为事实证明,所使用的自由代数的种类很少有全局元素来表示许多有趣的程序,尤其是固定点。λ

我和尼克·本顿(Nick Benton)和我在论文《反应式程序的超度量语义》中明确提出使用流进行编程。随后,艾伦·杰弗里(Alan Jeffrey)在他的LTL类型FRP类型的论文中建议使用LTL作为类型系统,这是沃尔夫冈·杰尔奇(Wolfgang Jeltsch)在他的论文《面向线性时间时序逻辑和函数反应式编程的通用分类语义学》中所做的观察。

通过比较Birkedal等人在“合成保护域理论的第一步:在主题中的逐步索引”中给出的构造,可以最好地理解尼克和我所采取的观点与艾伦和沃尔夫冈所采取的观点之间的差异(IMO)。与艾伦的纸。树木的拓扑结构(按大小排列的自然数预先分布)与尼克和我使用的超测空间类别非常相似,但与艾伦的分类法(按离散时间分类的预先分布)相比更容易,因为它们都是预先类别。

如果您对专门用于并发的期货感兴趣,那么考虑使用CTL而不是LTL 可能是一个更好的主意。AFAIK,这是目前尚未开发的领域!

编辑:这是草稿链接。本文主要涉及实现类型化的FRP,因此该语言是同步的。但是,第3.3节中有关期货/事件的大多数讨论基本上也应适用于真正的并发语言。


1
完成后,我希望得到一份副本。
Dave Clarke

1
看来这失去了期货的重要特征:一旦获得价值,就无法改变。我会尝试通过将作为公理来表达它,但这不是我们想要的,如果意味着一个流...而且在完成后也希望得到一份纸质副本: )AA
Alexey Romanov 2012年

最近,我读到了Scala类型Try[T],它Future[T]是对偶的,但是我不太了解这是什么意思。
乔治
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.