λ演算

λ演算是一個具有與圖靈機(jī)相同計(jì)算能力的形式系統(tǒng)奋姿,由圖靈同學(xué)的老師Alonzo Church于20世紀(jì)30年代提出。


定義

對一個形式系統(tǒng)麸恍,我們的套路就是分析它的語法和語義车伞。λ演算被很多人吹捧上天的優(yōu)點(diǎn)就是它的語法和語義都極度簡單蝉仇,其語法如下:

t := x       (variable)
     λx.t    (abstraction)
     t t     (application)

類似謂詞邏輯,這里給出綁定和自由變量的定義:

綁定: λx.t中发魄,在t里出現(xiàn)的x稱作被綁定
自由變量: x如果沒有被綁定妒貌,就是一個自由變量

語義規(guī)則只有兩條:

α-conversion: 可以一個abstraction中所有的綁定變量用另一種符號表示
例子: (λx.t[x]) → (λy.t[y])

β-reduction: 可以把一個abstraction中所有綁定出現(xiàn)的變量替換成參數(shù)
例子: ((λx.t) y) → (t[x:=y])

至此,λ演算的定義結(jié)束熄守。


求值

研究語義時蜈垮,我們需要關(guān)心一個語言是否滿足confluence,termination兩條重要性質(zhì)裕照。前者是指同一個式子在不同的推導(dǎo)下會得到同樣的值攒发;后者是指推導(dǎo)過程不會出現(xiàn)死循環(huán)。

為了描述方便晋南,我們定義(λx.t) y這樣的形式叫一個redex惠猿。

對于λ演算,共有4種求值策略:

  • full beta-reduction: 每一步都可以隨機(jī)選取一個redex進(jìn)行化簡
  • normal-order: 一個λ表達(dá)式可以用一棵樹來表示搬俊,每次只能選擇樹最接近根節(jié)點(diǎn)的redex進(jìn)行化簡(如果同一層有多個redex紊扬,從最左邊的開始)
  • call-by-name: 很多同義詞蜒茄,惰性求值,正則序都是
  • call-by-value:應(yīng)用序餐屎,每次函數(shù)傳參時檀葛,一定要先求出參數(shù)值

這里偷懶了,想形式化定義這4中求值方法的朋友可以參見TAPL這本書的習(xí)題5.3.6腹缩。

λ演算在full beta-reduction下是滿足confluence性質(zhì)的屿聋,具體證明可以參考Church-Rosser屬性。對于termination藏鹊,我們是很容易寫出一個死循環(huán)的λ表達(dá)式的润讥。


證明圖靈完備性

用λ演算逐步構(gòu)造true,false盘寡,分支結(jié)構(gòu)楚殿,自然數(shù),加法竿痰,乘法脆粥,減法,不動點(diǎn)影涉,遞歸等概念是很有趣的一個過程变隔,強(qiáng)烈推薦初學(xué)λ演算的朋友自己推導(dǎo)一遍⌒非悖可以參考神奇的λ演算匣缘。

這篇文章在不動點(diǎn)那一節(jié)介紹了著名的Y-combinator,并且展示了它是如何幫助我們找到任意表達(dá)式的不動點(diǎn)的鲜棠。但是在上一節(jié)介紹的call-by-value求值策略下肌厨,Y-combinator卻是會帶來死循環(huán)的遞歸構(gòu)造方法。我們看一個例子:

[定義] Y-combinator: λf.(λx.f(x x)) (λx.f(x x))
[性質(zhì)] Y g = g (Y g)
[例子] g = λf.λn. isZero n then 0 else plus n (f (pred n))
      sum = Y g
      sum 3 = Y g 3                                   (1)
            = g (Y g) 3                               (2)
            = g ((λx.g (x x)) (λx.g (x x))) 3         (3)
            ... ...

死循環(huán)的解釋如下:在(2)步時岔留,(Y g)和3都是g的參數(shù)夏哭,需要先求出(Y g)的值,把g帶入Y之后献联,還需對(x x)優(yōu)先求值竖配,這樣的操作會無限循環(huán)下去。因此在這里介紹一種新的Fixed-point Combinator里逆。

[定義] Fixed-point Combinator:  λf. (λx. f (λy. x x y)) (λx. f (λy. x x y))
[性質(zhì)] Fix g = g (Fix g)
[例子] g = λf.λn. isZero n then 0 else plus n (f (pred n))
      sum = Fix g
      sum 3 = Fix g 3
            = g (Fix g) 3
            = g ((λx. g (λy. x x y)) (λx.g (λy. x x y))) 3     (*)
            = plus 3 (Fix g 2)
            = plus 3 (plus 2 (Fix g 1))
            = plus 3 (plus 2 (plus 1 0))
            = 6

在Fix-point Combinator的推導(dǎo)中进胯,在(*)步驟處,因?yàn)闆]有application原押,滿足call-by-value繼續(xù)向下進(jìn)行的條件胁镐,所以可以繼續(xù)推導(dǎo)下去。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盯漂,隨后出現(xiàn)的幾起案子颇玷,更是在濱河造成了極大的恐慌,老刑警劉巖就缆,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帖渠,死亡現(xiàn)場離奇詭異,居然都是意外死亡竭宰,警方通過查閱死者的電腦和手機(jī)空郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來切揭,“玉大人狞甚,你說我怎么就攤上這事±” “怎么了哼审?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗤谚。 經(jīng)常有香客問我棺蛛,道長,這世上最難降的妖魔是什么巩步? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮桦踊,結(jié)果婚禮上椅野,老公的妹妹穿的比我還像新娘。我一直安慰自己籍胯,他們只是感情好竟闪,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杖狼,像睡著了一般炼蛤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝶涩,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天理朋,我揣著相機(jī)與錄音,去河邊找鬼绿聘。 笑死嗽上,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熄攘。 我是一名探鬼主播兽愤,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浅萧?” 一聲冷哼從身側(cè)響起逐沙,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洼畅,沒想到半個月后酱吝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡土思,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年务热,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片己儒。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡崎岂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闪湾,到底是詐尸還是另有隱情冲甘,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布途样,位于F島的核電站江醇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏何暇。R本人自食惡果不足惜陶夜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裆站。 院中可真熱鬧条辟,春花似錦、人聲如沸宏胯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肩袍。三九已至杭棵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氛赐,已是汗流浹背魂爪。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹰祸,地道東北人甫窟。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像蛙婴,于是被迫代替她去往敵國和親粗井。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容