Functional programming 函数式编程精神在命令式语言中的应用实例?

Functional programming 函数式编程精神在命令式语言中的应用实例?,functional-programming,Functional Programming,大多数人说,即使函数式编程也不太可能为您找到工作,通过学习它,您可以成为一名更好的命令式/OO程序员 对我来说,主要是编写“非成员非好友”函数,这些函数没有副作用。但是我想不出更多的例子来说明函数式编程可以有效地应用于命令式语言,因为解决语言缺乏特性的问题通常太麻烦了 那么,在函数式编程的启发下,您在非函数式语言中实际应用了哪些(特定的)示例/技术呢 另一个是我自己的经历 这是非常抽象的,但由于大多数FP语言中缺少“对象”,因此那里的文化倾向于严格的数据结构设计。通常,在OOP语言中,因为在类中

大多数人说,即使函数式编程也不太可能为您找到工作,通过学习它,您可以成为一名更好的命令式/OO程序员

对我来说,主要是编写“非成员非好友”函数,这些函数没有副作用。但是我想不出更多的例子来说明函数式编程可以有效地应用于命令式语言,因为解决语言缺乏特性的问题通常太麻烦了

那么,在函数式编程的启发下,您在非函数式语言中实际应用了哪些(特定的)示例/技术呢

另一个是我自己的经历
这是非常抽象的,但由于大多数FP语言中缺少“对象”,因此那里的文化倾向于严格的数据结构设计。通常,在OOP语言中,因为在类中填充一个额外的变量太容易了,所以事情很快就会变得一团糟。虽然使用OCaml和Haskell的记录语法也可以做到这一点,但这种方法在FP中似乎有些格格不入。

大多数Ruby可枚举方法都是受函数编程中的高阶函数启发而来的

新的ish JavaScript数组函数、过滤器、映射、every、some、reduce和reduceRight,是功能性的。注释中已经提到了功能性Java,但也有一些功能性的东西。请参阅软件包。

数据转换 根据我的经验,思考如何从功能上解决问题会让你更多地思考什么数据被转换为什么,而不是状态需要改变什么,以保持该死的东西运行

问题视为转换会使它们看起来完全不同-这会导致不同的解决方案,而且很可能是更优雅的解决方案


<强> Update <强>:C++中有头,in ../p>在某种程度上取决于语言。有些语言使FP技术过于冗长,以至于大多数模式都无法翻译,代码就会变得一团糟(参见:Java)。例如,在Javascript和C#中,有许多FP习惯用法是完全有用和适用的。这是一个很好的表意例子。@Kirk Woll,Java并没有那么糟糕,请看@SK logic,当我们所说的语言甚至没有将函数(或方法)作为语言的一流公民(可以传播)来使用时,那么该语言确实不适合容纳函数式习惯用法。例如,尝试将回调传递给Java中的方法。如果您使用的是接口的匿名实现,那么您将看到我提到的大量令人讨厌的锅炉铭牌代码。现在,也就是说,Java。然而,在那之前,它是相当粗糙的。在C++1x(使用lambdas)普及之前,

将在环绕代码中引入大量的噪声(例如,创建一个本地
结构
,只是为了定义
操作符()
)。上次我检查时,编译器对C++1x的支持还没有完全准备好用于重载使用。@kizzx2这是正确的:)-通常也会有噪音。。。