部分调用
外观
![]() |
在计算机科学中,部分调用(英文:partial application)是一种函数调用手段,其指将一个多元函数的一部分参数先确定下来,将这个函数和这些参数保存在一个内部数据结构中,并对外呈现一个要求更少的参数的函数。[1]
假设存在函数 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); }
参考
[编辑]- ^ Michael Ryan Clarkson. Partial Application | OCaml Programming | Chapter 2 Video 14. youtube.com. Michael Ryan Clarkson. [2025-01-15].