答案 0 :(得分:2)
一个重要原因是更多地使用高阶函数。一个简单的例子是map
。以下是等效的:
# Procedural psuedocode
result = []
for value in other_list:
add somefunc(value) to result
# Functional pseudocode
let result = map(somefunc, other_list)
高阶函数map
抽象出迭代第一个列表的代码,并将函数返回值依次添加到新列表中。其他高阶函数可用于实现其他技术,这些技术通常在其他范例中更详细地说明(无论是否必要)。
另一种不太常见的高阶函数是组合。在许多语言中,您编写的代码如
def new_function(x):
return func2(func1(x))
value = new_function(5)
或
lambda x: func2(func1(x))
在函数式样式中,您可以编写(或拥有)compose
函数来处理细节,而不必单独编写每个组合函数。
def compose(f, g):
def _(x):
return f(g(x))
value = compose(func2, func1)(x)
某些语言,如Haskell,甚至提供了一个合成运算符:
value = (func2 . func1)(x)