函数式编程

bandit 发布于 2025-11-25 192 次阅读


函数式编程(Functional Programming,FP)是一种把“计算”看成是对函数的求值、并且尽量避免改变数据的编程范式。它与我们常见的命令式编程(Java、Python 大部分写法)有很大不同。

下面用最简单的方式介绍它的核心思想:


⭐ 核心理念

1. 函数是“第一等公民”

函数可以像普通变量一样:

  • 传入另一个函数
  • 从函数返回
  • 存在数据结构里

例如 Haskell、JavaScript 的 map/filter 就是这种思想。

map (+1) [1,2,3]   -- 结果: [2,3,4]

2. 没有“可变变量”

FP 尽量避免:

  • 修改变量(没有 i++)
  • 修改对象内部状态

一旦数据被创建,就不会被改变(immutable)。
这让代码更可预测,也更容易并行化。

3. 强调“表达式”而不是“步骤”

命令式代码关注步骤:

sum = 0
for x in arr:
    sum += x

函数式强调的是表达式结果:

sum arr

4. 纯函数(Pure Function)

纯函数的特点:

  • 相同输入永远得到相同输出
  • 不会产生副作用(不会打印、不会修改全局变量、不会写文件)

纯函数带来的好处:

  • 更容易测试
  • 更容易推理
  • 可以并行执行

⭐ 函数式编程的优势

  • 代码更短、更简洁、更数学化
  • 可并行性强(因为没有共享可变状态)
  • bug 更少,更容易测试和推理

⭐ 常见语言中的例子

Haskell(纯函数式)

square x = x * x
map square [1,2,3]    -- [1,4,9]

JavaScript(支持函数式特性)

[1,2,3].map(x => x * 2)

Python

list(map(lambda x: x+1, [1,2,3]))

⭐ 一句话总结

函数式编程 = 纯函数 + 不可变数据 + 用表达式描述计算,而不是用步骤描述计算。

此作者没有提供个人介绍。
最后更新于 2025-12-10