如何将值注入Monoid?

时间:2013-07-01 09:55:16

标签: haskell

在我看来,没有办法在Data.Monoid中向Monoid注入单个值。我对此使用Data.Monad.return犹豫不决,但我希望能找到类似singleton的几种类型。

2 个答案:

答案 0 :(得分:15)

Monoid类不允许任何类型的注入,因为幺半群不是任何类型的容器。一些容器是幺半群,然后它们将有自己的注射方式。对于相对一般的注入,您可以使用pure中的Applicative或来自return的{​​{1}}(前者更为通用)。

答案 1 :(得分:6)

添加其他人所说的内容:Int形成一个幺半群(以几种不同的方式)。你会如何注射"值Int?好吧,你不要; Int只是Int。你可能会使用零或什么......?

现在,如果某个一个容器,它会形成一个monoid。但是monoid位并不能帮助你把它当作容器来对待;你需要尝试别的东西。许多不是容器的东西形成幺半群。