Lambda 婕旂畻鍙互琚О涓烘渶灝忕殑閫氱敤紼嬪簭璁捐璇█銆傚畠鍖呮嫭涓鏉″彉鎹㈣鍒?(鍙橀噺鏇挎崲) 鍜屼竴鏉″嚱鏁板畾涔夋柟寮忥紝Lambda 婕旂畻涔嬮氱敤鍦ㄤ簬錛屼換浣曚竴涓彲璁$畻鍑芥暟閮借兘鐢ㄨ繖縐嶅艦寮忔潵琛ㄨ揪鍜屾眰鍊箋傚洜鑰岋紝瀹冩槸絳変環(huán)浜?a title="鍥劇伒鏈?>鍥劇伒鏈?/a>鐨勩傚敖綆″姝わ紝Lambda 婕旂畻寮鴻皟鐨勬槸鍙樻崲瑙勫垯鐨勮繍鐢紝鑰岄潪瀹炵幇瀹冧滑鐨勫叿浣撴満鍣ㄣ傚彲浠ヨ涓鴻繖鏄竴縐嶆洿鎺ヨ繎杞歡鑰岄潪紜歡鐨勬柟寮忋?br>
鏈寮濮嬶紝Church 璇曞浘鍒涘埗涓濂楀畬鏁寸殑褰㈠紡緋葷粺浣滀負鏁板鐨勫熀紜錛屽綋浠栧彂鐜拌繖涓郴緇熸槗鍙?a title="緗楃礌鎮(zhèn)栬">緗楃礌鎮(zhèn)栬鐨勫獎鍝嶆椂錛屽氨鎶?lambda 婕旂畻鍗曠嫭鍒嗙鍑烘潵錛岀敤浜庣爺絀?a title="鍙綆楁?>鍙綆楁?/a>錛屾渶緇堝鑷翠簡浠栧[緙栬緫]
鍦?lambda 婕旂畻涓紝姣忎釜琛ㄨ揪寮忛兘浠h〃涓涓彧鏈夊崟鐙弬鏁扮殑鍑芥暟錛岃繖涓嚱鏁扮殑鍙傛暟鏈韓涔熸槸涓涓彧鏈夊崟涓鍙傛暟鐨勫嚱鏁幫紝鍚屾椂錛屽嚱鏁扮殑鍊兼槸鍙堜竴涓彧鏈夊崟涓鍙傛暟鐨勫嚱鏁般傚嚱鏁版槸閫? 榪?lambda 琛ㄨ揪寮忓尶鍚嶅湴瀹氫箟鐨勶紝榪欎釜琛ㄨ揪寮忚鏄庝簡姝ゅ嚱鏁板皢瀵瑰叾鍙傛暟榪涜浠涔堟搷浣溿備緥濡傦紝鈥滃姞 2鈥濆嚱鏁?f(x) = x + 2 鍙互鐢?lambda 婕旂畻琛ㄧず涓?位 x. x + 2 (位 y. y + 2 涔熸槸涓鏍風殑錛屽弬鏁扮殑鍙栧悕鏃犲叧绱ц) 鑰?f(3) 鐨勫煎彲浠ュ啓浣?(位 x. x + 2) 3銆傚嚱鏁扮殑浣滅敤 (application) 鏄?a class="new" title="宸︾粨鍚?>宸︾粨鍚?/a>鐨勶細f x y = (f x) y銆傝冭檻榪欎箞涓涓嚱鏁幫細瀹冩妸涓涓嚱鏁頒綔涓哄弬鏁幫紝榪欎釜鍑芥暟灝嗚浣滅敤鍦?3 涓婏細位 x. x 3銆傚鏋滄妸榪欎釜 (鐢ㄥ嚱鏁頒綔鍙傛暟鐨? 鍑芥暟浣滅敤浜庢垜浠厛鍓嶇殑鈥滃姞 2鈥濆嚱鏁頒笂錛?位 x. x 3) (位 x. x+2)錛屽垯鏄庢樉鍦幫紝涓嬭堪涓変釜琛ㄨ揪寮忥細
鏄瓑浠風殑銆傛湁涓や釜鍙傛暟鐨勫嚱鏁板彲浠ラ氳繃 lambda 婕旂畻榪欎箞琛ㄨ揪錛氫竴涓崟涓鍙傛暟鐨勫嚱鏁扮殑榪斿洖鍊煎張鏄竴涓崟涓鍙傛暟鐨勫嚱鏁?(鍙傝 Currying)銆備緥濡傦紝鍑芥暟 f(x, y) = x - y 鍙互鍐欎綔 位 x. 位 y. x - y銆備笅榪頒笁涓〃杈懼紡錛?/p>
涔熸槸絳変環(huán)鐨勩傜劧鑰岃繖縐?lambda 琛ㄨ揪寮忎箣闂寸殑絳変環(huán)鎬ф棤娉曟壘鍒頒竴涓氱敤鐨勫嚱鏁版潵鍒ゅ畾銆?/p>
騫墮潪鎵鏈夌殑 lambda 琛ㄨ揪寮忛兘鍙互瑙勭害鑷充笂榪伴偅鏍風殑紜畾鍊鹼紝鑰冭檻
鎴?/p>
鐒跺悗璇曞浘鎶婄涓涓嚱鏁頒綔鐢ㄥ湪瀹冪殑鍙傛暟涓娿?(位 x. x x) 琚О涓?蠅 緇勫悎瀛愰昏緫 (combinatory logic)銆?/p>
褰㈠紡鍖栧湴錛屾垜浠粠涓涓爣璇嗙 (identifier) 鐨?a title="鍙暟鏃犵┓">鍙暟鏃犵┓闆嗗悎寮濮嬶紝姣斿 {a, b, c, ..., x, y, z, x1, x2, ...}錛屽垯鎵鏈夌殑 lambda 琛ㄨ揪寮忓彲浠ラ氳繃涓嬭堪浠?涓婁笅鏂囨棤鍏蟲枃娉?/a>鎻忚堪錛?/p>
澶翠袱鏉¤鍒欑敤鏉ョ敓鎴愬嚱鏁幫紝鑰岀涓夋潯鎻忚堪浜嗗嚱鏁版槸濡備綍浣滅敤鍦ㄥ弬鏁頒笂鐨勩傞氬父錛宭ambda 鎶借薄 (瑙勫垯 2) 鍜屽嚱鏁頒綔鐢?(瑙勫垯 3)
涓殑鎷彿鍦ㄤ笉浼氫駭鐢熸涔夌殑鎯呭喌涓嬪彲浠ョ渷鐣ャ傚涓嬪亣瀹氫繚璇佷簡涓嶄細浜х敓姝т箟錛?1) 鍑芥暟鐨勪綔鐢ㄦ槸宸︾粨鍚堢殑錛屽拰 (2) lambda
鎿嶄綔絎﹁緇戝畾鍒板畠鍚庨潰鐨勬暣涓〃杈懼紡銆備緥濡傦紝琛ㄨ揪寮?((位 x. (x x)) (位 y. y)) 鍙互綆鍐欐垚 (位 x. x x) 位 y.y銆?/p>
綾諱技 位 x. (x y) 榪欐牱鐨?lambda 琛ㄨ揪寮忓茍鏈畾涔変竴涓嚱鏁幫紝鍥犱負鍙樺厓 y 鐨勫嚭鐜版槸鑷敱鐨勶紝鍗沖畠騫舵病鏈夎緇戝畾鍒拌〃杈懼紡涓殑浠諱綍涓涓?位 涓娿傚彉鍏冨嚭鐜版鏁扮殑緇戝畾鏄氳繃涓嬭堪瑙勫垯 (鍩轟簬 lambda 琛ㄨ揪寮忕殑緇撴瀯褰掔撼鍦? 瀹氫箟鐨勶細 鍦?lambda 琛ㄨ揪寮忕殑闆嗗悎涓婂畾涔変簡涓涓?a title="絳変環(huán)鍏崇郴">絳変環(huán)鍏崇郴
Alpha-鍙樻崲瑙勫垯琛ㄨ揪鐨勬槸錛岃緇戝畾鍙橀噺鐨勫悕縐版槸涓嶉噸瑕佺殑銆傛瘮濡傝 位x.x 鍜?位y.y 鏄悓涓涓嚱鏁般傚敖綆″姝わ紝榪欐潯瑙勫垯騫墮潪鍍忓畠鐪嬭搗鏉ヨ繖涔堢畝鍗曪紝鍏充簬琚粦瀹氱殑鍙橀噺鑳藉惁鐢卞彟涓涓浛鎹㈡湁涓緋誨垪鐨勯檺鍒躲?/p>
Alpha-鍙樻崲瑙勫垯闄堣堪鐨勬槸錛岃嫢 V 涓?W 鍧囦負鍙樺厓錛?i>E 鏄竴涓?lambda 琛ㄨ揪寮忥紝鍚屾椂 E[V/W] 鏄寚鎶婅〃杈懼紡 E 涓殑鎵鏈夌殑 V 鐨勮嚜鐢卞嚭鐜伴兘鏇挎崲涓?W錛岄偅涔堝湪 W 涓嶆槸 E 涓殑涓涓嚜鐢卞嚭鐜幫紝涓斿鏋?W 鏇挎崲浜?V錛?i>W 涓嶄細琚?E 涓殑 位 緇戝畾鐨勬儏鍐典笅錛屾湁
榪欐潯瑙勫垯鍛婅瘔鎴戜滑錛屼緥濡?位 x. (位 x. x) x 榪欐牱鐨勮〃杈懼紡鍜?位 y. (位 x. x) y 鏄竴鏍風殑銆?/p>
Beta-娑堣В瑙勫垯琛ㄨ揪鐨勬槸鍑芥暟浣滅敤鐨勬蹇點傚畠闄堣堪浜嗚嫢鎵鏈夌殑 E' 鐨勮嚜鐢卞嚭鐜板湪 E [V/E' ] 涓粛鐒舵槸鑷敱鐨勬儏鍐典笅錛屾湁
鎴愮珛銆?/p>
== 鍏崇郴琚畾涔変負婊¤凍涓婅堪涓ゆ潯瑙勫垯鐨勬渶灝忕瓑浠峰叧緋?(鍗沖湪榪欎釜絳変環(huán)鍏崇郴涓噺鍘諱換浣曚竴涓槧灝勶紝瀹冨皢涓嶅啀鏄竴涓瓑浠峰叧緋?銆?/p>
瀵逛笂榪扮瓑浠峰叧緋葷殑涓涓洿鍏鋒搷浣滄х殑瀹氫箟鍙互榪欐牱鑾峰緱錛氬彧鍏佽浠庡乏鑷沖彸鏉ュ簲鐢ㄨ鍒欍備笉鍏佽浠諱綍 beta 娑堣В鐨?lambda 琛ㄨ揪寮忚縐頒負鑼冨紡銆? 騫墮潪鎵鏈夌殑 lambda 琛ㄨ揪寮忛兘瀛樺湪涓庝箣絳変環(huán)鐨勮寖寮忥紝鑻ュ瓨鍦紝鍒欏浜庣浉鍚岀殑褰㈠紡鍙傛暟鍛藉悕鑰岃█鏄敮涓鐨勩傛澶栵紝鏈変竴涓畻娉曠敤鎴瘋綆楄寖寮忥紝涓嶆柇鍦版妸鏈宸﹁竟鐨勫艦寮忓弬鏁版浛鎹負瀹為檯鍙傛暟錛? 鐩村埌鏃犳硶鍐嶄綔浠諱綍鍙兘鐨勬秷瑙d負姝€傝繖涓畻娉曞綋涓斾粎褰?lambda 琛ㄨ揪寮忓瓨鍦ㄤ竴涓寖寮忔椂鎵嶄細鍋滄銆?a class="new" title="Church-Rosser 瀹氱悊">Church-Rosser 瀹氱悊 璇存槑浜嗭紝褰撲笖浠呭綋涓や釜琛ㄨ揪寮忕瓑浠鋒椂錛屽畠浠細鍦ㄥ艦寮忓弬鏁版崲鍚嶅悗寰楀埌鍚屼竴涓寖寮忋?/p>
鍓嶄袱鏉¤鍒欎箣鍚庯紝榪樺彲浠ュ姞鍏ョ涓夋潯瑙勫垯錛宔ta-鍙樻崲錛屾潵褰㈡垚涓涓柊鐨勭瓑浠峰叧緋匯侲ta-鍙樻崲琛ㄨ揪鐨勬槸[緙栬緫]
鍦?lambda 婕旂畻涓湁璁稿鏂瑰紡閮藉彲浠ュ畾涔?a title="鑷劧鏁?>鑷劧鏁?/a>錛屼絾鏈甯歌鐨勮繕鏄?a class="new" title="Church 鏁存暟">Church 鏁存暟錛屼笅闈㈡槸瀹冧滑鐨勫畾涔夛細
浠ユ綾繪帹銆傜洿瑙傚湴璇達紝lambda 婕旂畻涓殑鏁板瓧 n 灝辨槸涓涓妸鍑芥暟 f 浣滀負鍙傛暟騫朵互 f 鐨?n 嬈″箓涓鴻繑鍥炲肩殑鍑芥暟銆傛崲鍙ヨ瘽璇達紝Church 鏁存暟鏄竴涓?a class="new" title="楂橀樁鍑芥暟">楂橀樁鍑芥暟 -- 浠ュ崟涓鍙傛暟鍑芥暟 f 涓哄弬鏁幫紝榪斿洖鍙︿竴涓崟涓鍙傛暟鐨勫嚱鏁般?/p>
(娉ㄦ剰鍦?Church 鍘熸潵鐨?lambda 婕旂畻涓紝lambda 琛ㄨ揪寮忕殑褰㈠紡鍙傛暟鍦ㄥ嚱鏁頒綋涓嚦灝戝嚭鐜頒竴嬈★紝榪欎嬌寰楁垜浠棤娉曞儚涓婇潰閭f牱瀹氫箟 0) 鍦?Church 鏁存暟瀹氫箟鐨勫熀紜涓婏紝鎴戜滑鍙互瀹氫箟涓涓悗緇у嚱鏁幫紝瀹冧互 n 涓哄弬鏁幫紝榪斿洖 n + 1錛?/p>
鍔犳硶鏄繖鏍峰畾涔夌殑錛?/p>
PLUS 鍙互琚湅浣滀互涓や釜鑷劧鏁頒負鍙傛暟鐨勫嚱鏁幫紝瀹冭繑鍥炵殑涔熸槸涓涓嚜鐒舵暟銆備綘鍙互璇曡瘯楠岃瘉
鏄惁絳変環(huán)銆備箻娉曞彲浠ヨ繖鏍峰畾涔夛細
鍗?m 涔樹互 n 絳変簬鍦ㄩ浂鐨勫熀紜涓?n 嬈″姞 m銆傚彟涓縐嶆柟寮忔槸
姝f暣鏁?n 鐨勫墠椹卞厓 (predecessesor) PRED n = n - 1 瑕佸鏉備竴浜涳細
鎴栬?/p>
娉ㄦ剰 (g 1) (位 u. PLUS (g k) 1) k 琛ㄧず鐨勬槸錛屽綋 g(1) 鏄浂鏃訛紝琛ㄨ揪寮忕殑鍊兼槸 k錛屽惁鍒欐槸 g(k) + 1銆?/p>
涔犳儻涓婏紝涓嬭堪涓や釜瀹氫箟 (縐頒負 Church 甯冨皵鍊? 琚敤浣?TRUE 鍜?FALSE 榪欐牱鐨勫竷?yōu)當鍊鹼細
鏂█鏄寚榪斿洖甯冨皵鍊肩殑鍑芥暟銆傛渶鍩烘湰鐨勪竴涓柇璦 ISZERO錛屽綋涓斾粎褰撳叾鍙傛暟涓洪浂鏃惰繑鍥炵湡錛?/p>
鏂█鐨勮繍鐢ㄤ笌涓婅堪 TRUE 鍜?FALSE 鐨勫畾涔夛紝浣垮緱 "if-then-else" 榪欑被璇彞寰堝鏄撶敤 lambda 婕旂畻鍐欏嚭銆?/p>
閫掑綊鏄竴縐嶄互鍑芥暟鑷韓榪唬鑷韓鍙樺厓鐨勭畻娉曪紝涓鑸槸閫氳繃鍑芥暟鑷韓鏉ュ畾涔夊嚱鏁扮殑鏂瑰紡瀹炵幇銆傝〃闈㈢湅鏉?lambda 婕旂畻涓嶅厑璁擱掑綊錛屽叾瀹炶繖鏄竴縐嶅閫掑綊鐨勮瑙c傝冭檻闃朵箻鍑芥暟 f(n) 涓鑸繖鏍烽掑綊鍦板畾涔夛細
位璇█錛?/p>
鐢?Y-緇勫悎瀛?鍦?位璇█ 涓悎娉曞湴瀹氫箟錛?/p>