1
17
简单地说,由于monad的“bind”采用有效的延续(剩余计算的lambda)作为参数,因此monad在这个意义上就是延续。另一方面,正如下面的一些misc链接所建议的那样,可以使用单语法sugars在非CPS语言中有效地实现连续传递样式。 从Haskell的“关于Monads的一切”教程: https://www.haskell.org/haskellwiki/All_About_Monads#The_Continuation_monad F continue monad,用于实现样式循环的“break”和“continue” http://cs.hubfs.net/forums/thread/9311.aspx 对f中的问题应用连续monad的示例: http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!256.entry |
2
23
不仅是延续单子,而且它们是一种通用的单子,从某种意义上说,如果您有延续和状态,您可以模拟任何功能单子。这一令人印象深刻但高度技术性的成果来自于 Andrzej Filinski ,他在1994年写的关于:
|
3
6
他们可以,尽管他们不需要。我会稍微颠倒一下您的问题,说monad是实现延续的一种方法。但是,您可以通过许多方式实现连续性——您可以在C中进行适度但受限的CPS复制,而不需要太多的努力, for example . 看一看 The Continuation Monad 从哈斯克尔的现场进行了非常彻底的治疗。 |
4
4
关于这个主题的一篇非常好的文章: http://blog.sigfpe.com/2008/12/mother-of-all-monads.html |
5
1
延续是程序中的一个特殊函数。monad是类型构造函数。
类型构造函数
然而,
(在语言中使用callcc等同于能够从
|