什么是功能代码的令人印象深刻的例子?

时间:2009-02-08 02:43:39

标签: functional-programming

如果我想要更快的速度,我有点厌倦了明确地为多核编写代码,特别是当我只是编写一次性脚本时。我的开发盒已经有8个核心,这个数字比时钟速度快了很多。功能语言似乎提供了一个潜在的逃避舱口,但我还没有努力掌握它们中的一个。

我希望看到一些现实世界代码的样本块比非功能性替代品更好和/或更可并行化。我对这种语言并不挑剔 - 我对这些概念更感兴趣。

谢谢!

7 个答案:

答案 0 :(得分:6)

MapReduce怎么样?它具有令人难以置信的可并行性,即使它没有在函数式​​语言中实现,但它的灵感来自Lisp的mapreduce

答案 1 :(得分:4)

这个(很长但非常好)的视频给出了F#的介绍和一个引人注目的演示,说明在该语言中并行化代码是多么容易:

http://channel9.msdn.com/pdc2008/TL11/

答案 2 :(得分:2)

您的问题是在现有技术水平上要求材料。我认为你对这一领域的最佳介绍,有一些例子,是Nikhil和Arvind的书Implicit Parallel Programming in pH

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

另一个指向F#的链接async workflows。令人印象深刻的是能够获取同步代码,并通过一些小注释将其转换为异步代码。该代码保留了您可能使用的许多必要品质。你没有必要彻底改变一切来利用这一点;编译器通过处理它。

答案 5 :(得分:0)

Purely Functional Data Structures(长PDF),由Chris Okasaki撰写。

答案 6 :(得分:0)

我的老师曾经开玩笑说功能代码最好的例子就是未编写的代码。