假设我有10个重要的不同函数(并行与否)决定相同的问题.是否有一种很好的方法来实现一种投票方案,当达到多数并且不再需要计算时,它会自动实现懒惰?
obs.:这是关于懒惰ev的范围/限制的更多问题.当然,简单的"if"可以检测到多数.
谢谢
[编辑1]
......简单的"if"可以检测到多数.
对不起,我的意思是"单身如果" - >"单身等待所有过程完成".
......平行与否......
在这种情况下,我只是不知道并行性问题.(我的英语含糊不清)
您可以使用惰性自然数来轻松执行此操作,而无需进行并行计算。在这种情况下,我选择在 hackage 上使用 peano-inf 包:http://hackage.haskell.org/package/peano-inf
import Number.Peano.Inf
import Debug.Trace
import Data.List
myList = [trace "1" True, trace "2" True, trace "3" False, trace "4" True, trace "5" True]
btoNat True = 1 :: Nat
btoNat False = 0 :: Nat
ans = sum $ map btoNat myList
{-
*Main> ans > 2
1
2
3
4
True
-}
Run Code Online (Sandbox Code Playgroud)
请注意,5 未打印在迹线中,因为在此之前评估已被缩短。
要使用并行性来做到这一点,需要手动生成和终止线程等,这很好,但肯定不太令人愉快。
请注意,上面的代码使用标准总和。这种不常见的用例就是为什么尽管许多人觉得不值得,但 sum 并没有尽可能严格。