Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 什么是自由单子?_Haskell_Functional Programming_Monads - Fatal编程技术网

Haskell 什么是自由单子?

Haskell 什么是自由单子?,haskell,functional-programming,monads,Haskell,Functional Programming,Monads,我听过几次这个词,但我仍然不知道什么是所谓的“自由单子”。这个名字让我想到了免费的单子,但我不知道它们到底有什么联系。我在hackage上找到了一些库:,但上面的示例对我帮助不大 我认为我根本不理解这个想法,因此我看不到它们有什么好的用例。我还想知道与免费单子和经典mtl堆栈相比,它们有什么优势。您访问了自述文件中的链接吗?更多的例子在上面。简言之:免费单子可以将任何函子转换为单子。一个更自由的单子可以将任何种类Type->Type的东西变成单子,不管它是不是函子。重要的是,freer被用来提供

我听过几次这个词,但我仍然不知道什么是所谓的“自由单子”。这个名字让我想到了免费的单子,但我不知道它们到底有什么联系。我在hackage上找到了一些库:,但上面的示例对我帮助不大


我认为我根本不理解这个想法,因此我看不到它们有什么好的用例。我还想知道与免费单子和经典mtl堆栈相比,它们有什么优势。

您访问了自述文件中的链接吗?更多的例子在上面。简言之:免费单子可以将任何函子转换为单子。一个更自由的单子可以将任何种类
Type->Type
的东西变成单子,不管它是不是函子。重要的是,freer被用来提供一个效果系统作为一个库-一个MTL风格的monad transformers和类的潜在替代品,它们很棒但需要N^2个实例,每个新monad都需要一整套N个新实例。@chepner你应该把它作为一个答案发布,除非你投了赞成票。