为什么我们需要Clojure中的所有3 - tesser,transducer.core.reducers

时间:2016-05-19 10:50:03

标签: clojure parallel-processing

我正试图了解Clojure中用于并行计算的所有不同抽象。在阅读有关主题时,我会在冗长的文章的所有细节中迷失。

我正在寻找简短的回答

  • 为什么我们需要不同的库和
  • 何时使用以及何时不使用特定库。

到目前为止,让我感到困惑的是因为它们看起来一样

  • tesser
  • 传感器(使用core.async管道),
  • core.reducers(parallel folds)

1 个答案:

答案 0 :(得分:0)

这仍然是一个很好的问题!

我只注意到tesser使用reducer,folds(或拥抱!),并提供对高效和多核处理的访问。就要求函数是关联的和可交换的而言,它有一些约束。两者都有折叠(向右折叠),这是“在懒惰的道路上”。

传感器也有折叠。左边的折叠显然是在循环路径上的'#。看来,使用传感器,您可以选择!

我看到的2014年Vimeo视频指出了传感器的缺点,程序员需要获得中间结果。 Clojure状态传感器可以解决许多问题,在tesser中得到解决。

我是这个主题的新手,所以,我自己只是在完成它!