在我看来,没有办法在Data.Monoid
中向Monoid注入单个值。我对此使用Data.Monad.return
犹豫不决,但我希望能找到类似singleton
的几种类型。
答案 0 :(得分:15)
Monoid
类不允许任何类型的注入,因为幺半群不是任何类型的容器。一些容器是幺半群,然后它们将有自己的注射方式。对于相对一般的注入,您可以使用pure
中的Applicative
或来自return
的{{1}}(前者更为通用)。
答案 1 :(得分:6)
添加其他人所说的内容:Int
形成一个幺半群(以几种不同的方式)。你会如何注射"值Int
?好吧,你不要; Int
只是Int
。你可能会使用零或什么......?
现在,如果某个是一个容器,它会形成一个monoid。但是monoid位并不能帮助你把它当作容器来对待;你需要尝试别的东西。许多不是容器的东西形成幺半群。