小编HNo*_*oob的帖子

"评估"功能

这里是评估文档的摘录:(参见http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/Control-Exception-Base.html#v:evaluate)

Control.Exception.Base.evaluate :: a -> IO a
Run Code Online (Sandbox Code Playgroud)

是不一样的

evaluate x
Run Code Online (Sandbox Code Playgroud)

一个正确的定义是

return $! x
Run Code Online (Sandbox Code Playgroud)

我不明白这两个定义之间的语义差异......是否有人可以帮助我?提前致谢!

io monads evaluation haskell io-monad

23
推荐指数
1
解决办法
3028
查看次数

Union-Find:有效地检索集合的所有成员

我正在使用union-find算法.在我的程序的第一部分,算法计算一个大集的分区E.

之后,我想检索S包含给定节点的集合的所有成员x.

直到现在,天真地,我正在测试E集合中所有元素的成员资格S.但昨天我正在阅读"算法导论"(由CLRS,第3版,例如21.3-4),并且在练习中,我发现:

假设我们希望添加操作PRINT-SET(x),该操作被赋予一个节点xx以任何顺序打印所有成员.展示我们如何在一个不相交的林中为每个节点添加一个单独的属性,这样就PRINT-SET(x)可以在所x设置的成员数量上花费时间线性,并且其他操作的渐近运行时间不变.

" x套装成员数量的线性"对我的问题将是一个很大的改进!所以,我正在努力解决这个问题......经过一些不成功的尝试,我在Stack Overflow上寻求帮助!

algorithm data-structures union-find

8
推荐指数
2
解决办法
2997
查看次数

如何编写一个函数fmap,它返回输入的相同类型的iterable?

如何使用以下属性编写函数"fmap":

>>> l = [1, 2]; fmap(lambda x: 2*x, l)
[2, 4]
>>> l = (1, 2); fmap(lambda x: 2*x, l)
(2, 4)
>>> l = {1, 2}; fmap(lambda x: 2*x, l)
{2, 4}
Run Code Online (Sandbox Code Playgroud)

(我在haskell中搜索了一种"fmap",但是在python3中).

我有一个非常难看的解决方案,但肯定有更多pythonic和泛型的解决方案?:

def fmap(f, container):
    t = container.__class__.__name__
    g = map(f, container)
    return eval(f"{t}(g)")
Run Code Online (Sandbox Code Playgroud)

python functional-programming python-3.x

5
推荐指数
2
解决办法
134
查看次数

根据文件类型对文件进行排序

在HD问题和一些工作之后,我有一堆名称如"f1234","f1235"等的文件.

我的目标是根据文件类型对这些文件进行排序.例如,我想移动"pdfs"目录中的所有PDF文件.

对于一个文件,我可以这样做:"文件f1234",如果它是PDF,我可以"mv f1234 pdfs /".但是我有成千上万的文件...你能帮我用bash或zsh命令一次性排序所有的PDF吗?谢谢

linux bash shell zsh

1
推荐指数
1
解决办法
589
查看次数