我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?


当前回答

我认为你问题的答案更多地在于“工作的正确工具”这句话,而不是最热门的东西。总会有热门的新技术,也总会有人扑上去。

函数式语言已经出现了一段时间,只是现在它们得到了更多的报道。

其他回答

函数式编程已经存在很长一段时间了,因为LISP是最早拥有编译器的语言之一,而且自从MIT的LISP机器问世以来。这不是一种新的范式(OO更新得多),但主流软件平台倾向于用易于转换为汇编语言的语言编写,它们的api非常倾向于命令式代码(UNIX使用C, Windows使用C, Macintosh使用Pascal和后来的C)。

我认为过去几年的新创新是api的多样性,尤其是在平台api无关紧要的web开发领域。因为你没有直接对Win32 API或POSIX API进行编码,这就给了人们尝试函数式语言的自由。

我不认为函数式语言能解决任何问题,这只是管理层试图推销的一种炒作,记住唯一的事实:

没有灵丹妙药。

其余的都是胡扯,他们还说OO会解决我们的问题,Web服务会解决我们的问题,Xml会解决我们的问题,但最后上面的真理适用了,一切都失败了。而且,20年后,谁说我们还会使用二进制计算机呢?为什么不是量子计算机呢?没有人能预测未来,至少在这个星球上不能。(这是第二条真理)

函数式语言的一个关键特征是一类函数的概念。其思想是,您可以将函数作为参数传递给其他函数,并将它们作为值返回。

函数式编程包括编写不改变状态的代码。这样做的主要原因是,对函数的连续调用将产生相同的结果。您可以使用任何支持第一类函数的语言编写函数式代码,但有一些语言(如Haskell)不允许更改状态。事实上,你根本不应该产生任何副作用(比如打印文本)——这听起来可能完全没用。

相反,Haskell对IO: monads采用了不同的方法。这些对象包含解释器顶层要执行的所需IO操作。在其他任何层面上,它们都只是系统中的对象。

函数式编程有什么优点?函数式编程允许代码出现错误的可能性更小,因为每个组件都是完全隔离的。此外,使用递归和一级函数允许简单的正确性证明,这通常反映了代码的结构。

我没有看到任何人在这里提到房间里的大象,所以我认为这取决于我:)

JavaScript是一种函数式语言。随着越来越多的人使用JS做更高级的事情,特别是利用jQuery、Dojo和其他框架的优点,FP将通过web开发人员的后门引入。

与闭包结合使用,FP使JS代码非常轻便,但仍然可读。

欢呼, PS

事情朝着功能性的方向发展已经有一段时间了。过去几年的两个很酷的新孩子,Ruby和Python,都比之前的函数语言更接近——以至于一些Lispers开始支持其中一个或另一个,认为“足够接近”。

随着大规模并行硬件给每个人带来了进化的压力——函数式语言是应对这些变化的最佳位置——认为Haskell或f#将成为下一个大事件的飞跃并不像以前那么遥远。