Haskell 评估和模具模型是如何工作的?

Haskell 评估和模具模型是如何工作的?,haskell,parallel-processing,Haskell,Parallel Processing,我对评估和死亡模型的工作原理有一些疑问。首先,这个模型如何控制线程粒度 我的第二个疑问是关于“评估”和“模具流”的行为,例如,如果a具有如下函数: map (spark g) [1..10] where spark f x = x `par` f x g x = x^x 评估和模具模型的流程对于这个函数的执行是唯一的?我不明白你在问什么。不管怎样,考虑到第一个应用程序星火G 1 仅仅是 1“PAR”1 ^ 1 。我试图构造一个图来查看这个模型是如何工作的。我正

我对评估和死亡模型的工作原理有一些疑问。首先,这个模型如何控制线程粒度

我的第二个疑问是关于“评估”和“模具流”的行为,例如,如果a具有如下函数:

map (spark g) [1..10] 
  where 
      spark f x = x `par` f x 
      g x = x^x

评估和模具模型的流程对于这个函数的执行是唯一的?

我不明白你在问什么。不管怎样,考虑到第一个应用程序<代码>星火G 1 仅仅是<代码> 1“PAR”1 ^ 1 <代码>。我试图构造一个图来查看这个模型是如何工作的。我正在考虑这个函数将激发x并计算fx,但是主线程可能会先计算x,然后激发将失效。但是,我不确定这是否是该函数在考虑评估和模具模型时的唯一方式。我不知道评估和模具。然而,以这种方式使用
map
par
似乎一次最多使用两个内核。当列表中的一个元素在主线程中被强制时,将创建一个火花。然后,假设
g
strict,在spark完成之前,主线程不会开始计算另一个列表元素。因此,在第一个火花完成之前,不会创建第二个火花。这就是你想要实现的吗?