使用这样的语言,我想将所有状态更改隔离到代码的一个部分,并使程序的其余部分纯粹是函数式的。仅仅想想就让我流口水(调试天堂!)。
到目前为止,我发现了Scala,尽管我刚刚听说它(看起来很棒)。在这种“混合风格”范例中是否存在其他大型竞争者?
此外,许多脚本语言如 Python、Ruby、Lua 等都具备这种能力,但缺少函数式语言中的许多优秀特性,例如代数数据类型和模式匹配。
Scala:优美的面向对象和函数式混合,可能在未来十年或二十年内超过Java成为JVM的首选语言。我喜欢它,因为它将函数式编程带到了Java平台上,我认为这是非常需要的。
C#:非常支持面向对象,同时也越来越支持函数式(已经有头等函数了,我们会看到.net 4会带来什么改进)。
F#:.net语言专门设计用于函数式编程,而不像C#最初是为面向对象而构思的。
Python:非常适合面向对象,但不太适合函数式编程
Javascript:支持头等函数,但并不像Scala和F#那样专为函数式编程而设计。在我看来仍然比Python略好一些。
为什么要混合面向对象和函数式编程?作为一个过渡阶段吗?
据我所知,OCaml和F#是最流行的混合OOP和FP的编程语言。
大多数语言像Ruby一样混合了函数式编程,但很多人甚至没有意识到这一点。我发现这样的语言在语法方面存在很多不足之处。
JavaScript、Python和Ruby可以这样使用,但是Scala通过静态类型的函数和在JVM下工作来提高了一级。
C#。它是一种命令式语言,具有很多实用的功能性特点,如Lambda表达式、迭代器和LINQ。
它可能不太吸引纯粹主义者,但对我来说很有效。