限制monad的现状是什么?

时间:2012-07-22 10:56:50

标签: haskell monads

至少在20世纪90年代末期,人们希望以友好的方式将restricted monads整合到Haskell中。

例如,如果没有受限制的monad,则无法从SetMapprobability distributions中生成有效的monad。这是几年前的一个SO question,其中有人碰到了这个问题。

人们已经提出了各种解决方法,包括:

然而,这些方法似乎都不是“规范的”。 2007年,我在this blog post找到了Don Stewart的评论,他在那里暗示我们与Indexed types限制monad“非常接近”。

现状是什么?现在有一种“规范”的方式来限制单子吗?或者我们仍然有解决方法?

2 个答案:

答案 0 :(得分:11)

Anders Persson,Emil Axelsson和Josef Svenningson最近的一篇论文展示了一种编码受限制monad的方法。我忘记了细节,但我记得这是一篇很好的论文。

  

Persson,A .; Axelsson,E .; Svenningsson,J。(2011)。 Generic monadic constructs for embedded languages。 IFL 2011,第23届功能语言实施和应用研讨会。

答案 1 :(得分:10)

实际上有可能获得一个有效的Set monad作为常规monad, 没有任何限制。以两种不同的方式。以下文章 解释了两个:

http://okmij.org/ftp/Haskell/set-monad.html

文章还指出受限制的monad实际上是相当的 限制和排除许多一元成语。我猜想那个 实现方法是通用的,任何受限制的monad都可以 变成了平常的,没有失去效率。所以,看起来似乎 我们根本不需要受限制的monad。