部分调用

在计算机科学中，部分调用（英文：partial application）是一种函数调用手段，其指将一个多元函数的一部分参数先确定下来，将这个函数和这些参数保存在一个内部数据结构中，并对外呈现一个要求更少的参数的函数。

假设存在函数 f (d, n) = [... 返回 boolean 值表示n是否能被d整除... ]。为了编程方便，需要另一个函数 g (n) = [... 返回 boolean 值表示n是否能被5整除... ]。可见，g (n) = f (5, n)。在上述例子中，对 f 这个二元函数进行了调用，提供了两个参数(5, n)，并由此产生了一个一元函数 g，而 g 的参数 n 被传递给 f。但是，一些语言中（如 ocaml，haskell），这个例子可以直接写作g = f (5)。f 明明是二元函数，却只传了一个参数，并获得一个一元函数 g。这种独特的调用方式即称为部分调用。

(* 上述例子中的 f 和 g 在 ocaml 中的实现 *)
let f d n = if n mod d = 0 then true else false
let g = f 5
(* 等同于 let g n = f 5 n *)

// js中，没有部分调用功能，只能通过明确传参的一般调用实现同样的功能。
function f (d, n) { if (n % d === 0) { return true } else { return false } }
function g (n) { return f (5, n); }

参考

Category:编程语言概念