加载中...
柯里化是函数式编程中的一种技术,把一个接受多个参数的函数转换为一系列每次只接受一个参数的函数链。它以逻辑学家哈斯凯尔·柯里命名,便于函数复用、参数固定和函数组合。

| 类型 | 函数式编程技术 |
| 命名来源 | 哈斯凯尔·柯里 |
| 核心变换 | f(a,b,c) → f(a)(b)(c) |
| 相关概念 | 部分应用、函数组合 |
柯里化(Currying)是一种把接受多个参数的函数转换为一连串只接受单个参数的函数的技术。原函数一次性接收全部参数,柯里化后则每次接收一个参数并返回一个新函数,直到收齐所有参数才计算结果。
柯里化以美国逻辑学家哈斯凯尔·柯里(Haskell Curry)的名字命名,函数式编程语言 Haskell 也以他命名。在 Haskell 等语言中,所有函数默认都是柯里化的。柯里化让函数的参数可以分步传入,为部分应用和函数组合提供了便利。
需要注意柯里化与部分应用的区别:柯里化严格地把函数拆成一系列单参数函数;部分应用则是一次性固定任意数量的参数并返回一个接受其余参数的新函数。两者思路相近但形式不同。
柯里化常见于 JavaScript、Haskell、Scala 等语言的函数式编程实践中,用于构建可组合的工具函数、编写配置化的回调,以及在函数管道中把多参数函数适配为单参数函数。许多函数式工具库都提供自动柯里化的辅助函数。
问:柯里化和部分应用是同一个概念吗?答:不是。柯里化总是把函数拆分为逐个接收单参数的链条;部分应用只是预先绑定其中一部分参数,返回接收剩余参数的函数。柯里化后的函数天然支持部分应用。
问:柯里化有实际性能代价吗?答:它会产生额外的中间函数和闭包,在参数很多或高频调用时会带来一定开销,因此需要在可读性、复用性与性能之间权衡。

| 类型 | 函数式编程技术 |
| 命名来源 | 哈斯凯尔·柯里 |
| 核心变换 | f(a,b,c) → f(a)(b)(c) |
| 相关概念 | 部分应用、函数组合 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧