|
|
1
8
我认为前两个问题的答案是“视情况而定”——自由单子会带来一些开销,当然也会遇到堆栈溢出,但您可以始终使用一个避免这种情况的实现,如果您正在进行I/O,那么开销可能不会太大。 我认为自由单子更大的问题是它们太复杂了。它们可以让你解决一个问题(抽象出你如何使用大量的it操作运行代码),但代价是你让代码变得非常复杂。大多数时候,我认为你可以保留一个“功能内核”作为一个很好的可测试的纯部分和围绕它的“命令包装器”,它足够简单,你不需要对它进行测试和抽象。 自由单子是非常通用的建模方法,你可以使用更具体的表示。对于阅读和写作,你可以做:
正如你所见,这不仅仅是一个简单的列表-
输入“Hello”时,只显示名称是否为空。运行程序的代码如下所示:
前两种情况很好,完全是尾部递归的。最后一个例子是tail recursive in
自由单子基本上是对这一点的抽象——但我个人认为它们走得太远了,如果我真的需要它,那么像上面这样的东西——有具体的说明——是更好的解决方案,因为它更简单。 |
|
|
MMedina · 将powershell应用于子文件夹 1 年前 |
|
|
YorSubs · Linux中遍历目录的时间不同方法[关闭] 1 年前 |
|
Romn · 在递归函数中键入元组或元组列表 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
Ack · 尝试迭代JSON数据以匹配用户输入 1 年前 |