2009-02-08 61 views
10

如果我想要更多速度,特别是当我只写一次性脚本时,我已经厌倦了为多核心而明确编写代码。我的开发盒已经有8个核心,这个数字比时钟速度快得多。功能语言似乎提供了一个潜在的逃生舱口,但我还没有努力去掌握其中的一个。功能代码有哪些令人印象深刻的例子?

我很想看到,比非功能性的替代品更好和/或更多并行的实际代码一些样本块。我对语言并不挑剔 - 我对这些概念更感兴趣。

谢谢!

+0

作为一个具有8个内核的开发盒,你在运行什么? – 2009-02-08 06:28:22

+0

我的猜测是双核四核 – 2009-02-08 07:38:01

+0

是的 - 它是一个双核四核戴尔服务器。 – twk 2009-02-08 16:09:00

回答

6

如何MapReduce?它是令人难以置信的可并行化的,尽管它没有在函数式​​语言中实现,但它的灵感来源于Lisp的mapreduce

1

在第20章(“编程多核CPU”)Programming Erlang中有一个使用mapreduce的文本索引器/搜索器的扩展示例。我不知道这是多么令人印象深刻,但它看起来像代码凡人可以写。

1

LINQ是一个很好的例子主流语言的函数式编程。物化代码和单子?在MY C#中? :)无论如何,w.r.t.线程,有提到Parallel LINQ。通过使用不变性和更高阶的函数(也许是Expression),库可以为我们并行化事物。

而另一个链接到F#与async workflows。令人印象深刻的是能够采用同步代码,并且通过一些小标注将其转换为异步代码。代码保留了许多您可能使用的命令性质。你不必完全改变事物来利用它;编译器通过处理它。

0

开玩笑说的功能代码最大的例子是不写的代码我的一个老师。