“ Monad变形金刚比效果更强大”-例如?


78

Edwin C. Brady关于Idris中的影响的论文“具有代数效应和相关类型的编程和推理”包含(未引用的)主张:

尽管[效果和monad变压器]的功率不相等-monads和monad变压器可以表达更多概念,但可以捕获许多常见的有效计算。

有哪些可以用monad变压器建模但不能用效果建模的示例?


22
这是一个有用的问题,不仅论文的作者可以得到更多人的回答。更多功能的一个例子是允许重复效果。
布赖恩·麦肯纳

5
我想知道这个问题的答案。当我在这里找到它时,我不想联系该论文的作者。
布林·凯勒

3
即使提到了一些论文,这也是一个好问题……
cnd

11
如果我从在安德烈·鲍尔(Andrej Bauer)的博客中找到的论文中正确回忆起,则代数效应只是定界连续单子的风格化使用。因此,单子至少与代数效应一样强大。Eff语言的主页旨在从头开始使用代数效应,其中包含指向其中一些论文的链接。我并没有将其发布为答案,因为我本人并不真正了解细节。
pyon

@EduardoLeón定界的延续在Bauer和Pretnar 2010中进行,使用代数效果和处理程序编程(pdf);本文以“最后,延续是非代数计算效果的典范例子”结尾,因此eff提供了一种灵活,清晰的定界控制形式令人惊讶,特别是因为在我们的设计中根本没有延续议程。那么,我们可以从eff那里学到关于在有效环境中控制操作员的什么?”
查尔斯·斯图尔特

Answers:


10

可以使用CPS将连续性建模为单子,但是它们不是代数效应,因为不能使用Lawvere理论对其进行建模。参见Martin Hyland和John Power,2007,“通用代数的类别理论理解:Lawvere理论和Monads(pdf)”,ENTCS 172:437-458。


谢谢你的回答。我正在考虑这个问题,并试图将类别理论转化为更具程序性的东西,以使我的头脑得到发展。@Eduardo在上面评论说,效果与定界延续是同构的。因此,我怀疑无法建模无限分隔的延续这一事实有些直觉。可能必须将作用范围限定在给定的区域并进行处理,然后有效值才能逃逸,而单子的传染性更高。
geoff_h 2015年

1
@geoff_h我说过可以将代数效应建模为定界延续单子的用法,而不是等效的。
pyon 2015年

@Eduardo但是Eff确实允许表示定界的延续-尽管有时需要递归类型。这表明是同构的-可以将效果建模为定界延续,可以将定界连续建模为效应-但也许Eff也可以表示某些非代数效应-尽管我不确定我对什么是非代数效应将意味着。
geoff_h 2015年

@geoff_h我怀疑代数效应和定界延续之间的关系就像单子与CPS之间的关系:后者提供前者控制结构的表现力,但不提供构造数据类型的能力。
查尔斯·斯图尔特
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.