4.1 尚芬哥爾操作
二
4.1_1 是一個函數。在缺乏規約的情況下,
是有歧義的,因為在實際操作上,我們不知道應該如何使用函子 F。
使用括號是一個常用的手段,例如
這明顯是一個二元函數,換句話說,這個函數的返回值同時需要兩個輸入值。假設 F 是求和函數,我們必須同時用譬如「4」來替換「x」,及用譬如「2」來替換「y」,從而有﹕
弗雷格的眾多創見之一是在《概念文字》中明確指出我們沒有必要視「4+2 = 6」這樣的一個句子為滿足了下述函數
而得出的一個結果。就邏輯而言,「4+2 = 6」也可以是滿足了這個函數
而得出的一個結果,即 (4+...) 是另一個概念。
尚芬哥爾的突破性是將弗雷格的創見付諸行動並設計出一個函數化約方案。以二元函數為例,按弗雷格的建議,我們可以合法地將一個二元函數 F(x,y) 寫作
fx 是個一元函數,其論元為 y﹔f 自己也是個一元函數,其論元為 x。
如果 G 是 fx 的返回值 (也是一個函數),我們便有
若用計算機編程的語言來表達,可註「x」下標,以表示 x 為 G 函數的參數﹕
顯然,任一具有如下形式結構
的多元函數也可以改寫作
如果我們有以下的約定﹕
就計算而言,我們有一個簡潔而毫不含糊的嚴格程序﹕先滿足 x1,再滿足 x2,一直至 z,如果原來的多元函數為 F(x1,x2, ... , z)。在計算機出現之前,這個化約函數的手段看似一個花招﹔但在計算機出現之後,一直到函數式編程在二十世紀六十年代逐漸冒出頭來 (1960 的 LISP﹑1963 的 Algol 60﹑1966 的 ISWIM﹑1968 的 PAL﹑1973-83 的 SASL﹑1970 的 ML﹑1986 的 Miranda﹑1992 至今的 Haskell) [Turner 2012] ,人們才明白上文關於把多元函數化約為單元函數的技法可用作計算機演算的一種核心技術。函數式編程語言都以 λ 記法為核心技術,而 λ 演算的核心技術就是尚芬哥爾操作 (schönfinkeling 或 schönfinkelization) 或柯里化 (currying) —— 即把多元函數化約為單元函數的技法。
__________
待續