范畴论和单子论在理论计算机科学研究中的现状?


17

背景。我是一名本科生,对与类别理论,monads和Haskell有关的研究感兴趣,并且我想为该领域的本科论文找到一个主题。

我看了看报纸

而且我还不太了解。我可能需要一些时间才能完全理解它。但是在花更多的时间研究它之前,我想更好地了解该领域及其研究潜力。我最近与我的一位教授讨论了这一问题,他告诉我,单子电池在90年代的研究界就很流行,但如今它们已经过时了。

因此,我现在正在寻找与monad有关的最新作品,并且想知道:

  • 如今,在理论计算机科学的哪些领域中完成了与类别理论和单子论有关的研究?
  • 关于E. Moggi在程序设计理论上对单子的研究,已经建立或提出了什么样的研究?是否有与他的论文相关的后续研究或正在进行的研究?

在我们回答这个问题之前:不是研究水平吗?它可能更适合cs.stackexchange.com。
安德烈·鲍尔

3
@AndrejBauer我的学士学位论文不会是研究水平,但我的问题是针对当前的研究或至少是过去十年中进行的研究。
k.stm,2015年

9
@AndrejBauer我不同意。姐妹站点主要用于作业问题,而此处需要专家意见。
Yuval Filmus 2015年

@Kaveh这就是您刚刚进行的激烈编辑。您改善了一些观点,但是现在这不再是我一直在问的问题。明天有时间时,我将回滚您的一些更改。例如,对我来说重要的是要有背景。请告诉我您认为需要进行哪些更改以及为什么进行更改,所以我知道不应该回滚的内容。
k.stm 2015年

1
@Yuval,我认为许多计算机科学领域的人都强烈不同意您的评论,因为它主要用于家庭作业,而专家不在计算机科学领域。在这种情况下,安德烈(Andrej)已回答了有关计算机科学的 100多个问题。
卡夫

Answers:


15

自从欧金尼奥·莫吉(Eugenio Moggi)的工作以来,有关在计算理论中使用单核词的工作已取得了许多进展。我无法提供全面的说明,但是我很熟悉这里的某些观点,其他观点也可以得到他们的答案。

单子的具体例子

您不必一直学习超常规理论。有一些单子的例子非常有趣并且足够复杂,无法填满整个本科论文。

我非常喜欢Dan Piponi的博客,他在其中提供了令人惊奇的示例,说明如何使用monad来混合函数式编程和数学。例如,通过monad搜索关于打结和编织的著作。

Martin Escardo和Paulo Oliva在选择函数的上下文中给出了另一个值得研究的mondas实例,请参见它们的选择函数,小节递归和向后归纳法,或者也许是想先读一下What Sequential Games,Tychonoff定理和双重否定移位有共同点此处相关的Haskell和Agda文件)。

数学背景

Monad来自类别理论,并且比Eugenio Moggi年龄大得多。如果您数学上很喜欢,可以学习背景理论。例如,您可以攻击贝克的单性定理。有理论的计算机科学家永远不会知道太多数学。

主题变化

您可能会看到严格意义上不是单子的东西。

例如,康纳·麦克布赖德(Connor McBride)和罗斯·帕特森(Ross Paterson)的成语:带效果的应用程序编程显示了人们如何将Monad泛化为实际上相关且有见地的东西。

或者您可以看看如何使用comonads来建模计算效果。有人应该为该主题提供一些参考,但是一个很好的开始可能是David Overtone的幻灯片

模态类型理论

在同伦类型理论中以及一般在类型理论中,单子形式为模态类型理论。最近,在同态类型理论中已经考虑了模态类型理论,因为截断算子是模态算子的示例。然后是内聚同伦类型理论,其中模态运算符(单子)起着至关重要的作用。

代数效果和处理程序

[免责声明:部分吹响我自己的角。]

不久前,戈登·普洛特金(Gordon Plotkin)和约翰·鲍尔(John Power)认为许多计算效果不仅是单子,而且是由代数理论产生的特殊单子。这导致了对计算效果的全新处理,即代数效果。后来,Gordon Plotkin和Matija Pretnar引入了处理程序,并与代数效应一起形成了非常好的计算效应理论。这种方法的优点之一是可以容易地组合代数理论,而单子表达式则不能。

您可以研究代数效应与单子的确切关系。您可以看看人们是如何实现代数效果和处理程序的,例如以Eff语言Haskell作为库。这或多或少是当前的研究。


嗨,谢谢您的回答!我单击了有关Eff的网站,似乎到“代数效果和处理程序简介”的链接已过期,即文件eff-lang.org/handlers-tutorial.pdf丢失。
k.stm 2015年

1
我要求Matija修复该链接,同时您可以查看arxiv.org/abs/1203.1539
Andrej Bauer 2015年

我已经是。顺便说一下,您能否简要介绍一下我需要学习的背景理论才能理解您的论文?我知道一些类别理论,未类型化的Lambda微积分,一些计算基础理论和编程基础理论(我知道什么是指称语义),但到目前为止还不多。例如,我可以从您的论文的第3节中得知,我需要研究打字规则(因此也许要研究打字Lambda演算)。对不起,如果我在这里很忙。
k.stm

3
您应该对通用代数和/或Lavwere的代数理论有一点了解。如果您不熟悉输入规则,则可以学习有关编程语言的一般教科书,例如Benjamin Pierce的TAPL或Bob Harper的 编程语言实用基础
Andrej Bauer 2015年

1

给出了一些重要的最近使用的工作单子。


1
嗨,谢谢您的回答。我希望能有一些背景说明,那就是如果您可以抽出时间来提供一些细节。(实际上,该论文对其内容进行了很好的介绍,但我仍然希望看到其周围的环境,例如是否有相关工作之类的东西。)
k.stm 2015年
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.