亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用JavaScript高階函數實現運算的理解?(越通俗越好)

使用JavaScript高階函數實現運算的理解?(越通俗越好)

呼如林 2018-09-14 09:21:55
'use strict'; // 定義數字0:var zero = function (f) {    return function (x) {        return x;    }}; // 定義數字1:var one = function (f) {    return function (x) {        return f(x);    }}; // 定義加法:function add(n, m) {    return function (f) {        return function (x) {            return m(f)(n(f)(x));        }    }}
查看完整描述

1 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

這就是 lambda calculus 啊,是 Church Numeral 的基礎。

這是將自然數定義為了函數的“作用”,對于某個自函子函數f(x)而言,自然數列(0, 1, 2, 3, ...)被映射成了:xf(x)f(f(x))f(f(f(x))), ...

這樣,每個自然數n都被映射為了一個函數,這個函數接受一個自函子函數f()和對應范疇上的對象x,返回一個對應范疇上的對象y,這個y的值是將函數f()x作用n層得到的結果,可以將這個結果y簡記為f^(n)(x)(^表示冪次,書寫時可以將n寫為上標)。如果我們用一個函數church()來表示這個映射,那么有:church(n, f, x) = f^(n)(x)

那么,自然數m + n就變成了對于x作用m + n層的函數f的作用,那么如何用公式表示這個作用呢?其實就是利用公式f^(m + n)(x) = f^(m)(f^(n)(x)),這個公式如果用church()重寫的話,就有:church(m + n, f, x) = church(m, f, church(n, f, x)),也就是你示例程序里面的那個add(n, m)


查看完整回答
反對 回復 2018-10-17
  • 1 回答
  • 0 關注
  • 593 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號