这里是评估文档的摘录:(参见http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/Control-Exception-Base.html#v:evaluate)
Run Code Online (Sandbox Code Playgroud)Control.Exception.Base.evaluate :: a -> IO a
是不一样的
Run Code Online (Sandbox Code Playgroud)evaluate x
一个正确的定义是
Run Code Online (Sandbox Code Playgroud)return $! x
我不明白这两个定义之间的语义差异......是否有人可以帮助我?提前致谢!
我正在使用union-find
算法.在我的程序的第一部分,算法计算一个大集的分区E
.
之后,我想检索S
包含给定节点的集合的所有成员x
.
直到现在,天真地,我正在测试E
集合中所有元素的成员资格S
.但昨天我正在阅读"算法导论"(由CLRS,第3版,例如21.3-4),并且在练习中,我发现:
假设我们希望添加操作
PRINT-SET(x)
,该操作被赋予一个节点x
并x
以任何顺序打印所有成员.展示我们如何在一个不相交的林中为每个节点添加一个单独的属性,这样就PRINT-SET(x)
可以在所x
设置的成员数量上花费时间线性,并且其他操作的渐近运行时间不变.
" x
套装成员数量的线性"对我的问题将是一个很大的改进!所以,我正在努力解决这个问题......经过一些不成功的尝试,我在Stack Overflow上寻求帮助!
如何使用以下属性编写函数"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) 在HD问题和一些工作之后,我有一堆名称如"f1234","f1235"等的文件.
我的目标是根据文件类型对这些文件进行排序.例如,我想移动"pdfs"目录中的所有PDF文件.
对于一个文件,我可以这样做:"文件f1234",如果它是PDF,我可以"mv f1234 pdfs /".但是我有成千上万的文件...你能帮我用bash或zsh命令一次性排序所有的PDF吗?谢谢
algorithm ×1
bash ×1
evaluation ×1
haskell ×1
io ×1
io-monad ×1
linux ×1
monads ×1
python ×1
python-3.x ×1
shell ×1
union-find ×1
zsh ×1