Vel*_*ost 6 haskell functional-programming mapreduce clojure
我正在为一门课程做一个作业,这要求我用函数式语言实现一个并行的MapReduce引擎,然后用它来解决某些简单的问题.
你认为我应该使用哪种功能语言?
这是我的要求:
我目前正在考虑Haskell和Clojure,但这两种语言对我来说都是新的 - 我不知道这些语言是否真的适合这种情况.
由于不同的原因,Clojure和Haskell绝对值得学习.如果你有机会,我会尝试两者.我还建议将Scala添加到您的列表中.
如果你必须选择一个,我会选择Clojure,原因如下:
此外,Clojure使并行map-reduce变得非常容易.这是一个开始:
(reduce + (pmap inc (range 1000)))
=> 500500
Run Code Online (Sandbox Code Playgroud)
使用pmap而不是map足以为您提供并行映射操作.如果您使用Clojure 1.5,还有并行Reducer,有关详细信息,请参阅reducers框架
Cloud Haskell将是实现map/reduce模型的分布式系统引擎的合适选择.但是,对于双核本地系统,使用GHC运行时中的现有并行支持直接在GHC中实现它就足够了.开箱即用提供轻量级线程,工作窃取队列和其他有用的基元.
如果我正在实现/ new/MapReduce引擎,我会使用GHC.类型,并行调试工具(如ThreadScope)和优化编译器确保您能够从代码中获得所需的性能,而优秀的多核运行时将使您可以很好地扩展.