部分調用
外觀
![]() |
在計算機科學中,部分調用(英文: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].