为什么在函数式编程语言中编写的代码比在其他编程范式语言中编写的代码更短?

时间:2015-08-17 13:54:46

标签: functional-programming paradigms

很多人说用函数式编程语言编写的代码比在其他编程范式语言中编写的代码要短。但为什么呢?

1 个答案:

答案 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)