有類型λ演算
種類
已經(jīng)研究了各種有類型 lambda 演算。簡單類型lambda演算的類型只是基本類型(或類型變量)和函數(shù)類型 σ σ -->→ → -->τ τ -->{\displaystyle \sigma \to \tau }。系統(tǒng)T 向簡單類型 lambda 演算擴(kuò)展了自然數(shù)類型和更高階的原始遞歸函數(shù);在這個(gè)系統(tǒng)中在可證明在皮亞諾算術(shù)中是遞歸函數(shù)的所有函數(shù)都是可定義的。系統(tǒng)F通過在所有類型上的全稱量化允許多態(tài)性;從邏輯的觀點(diǎn)看它可以描述可證明在二階邏輯中是全函數(shù)的所有函數(shù)。有依賴類型的 lambda 演算是直覺類型論,構(gòu)造演算和邏輯框架(LF)的基礎(chǔ),它是帶有依賴類型的純 lambda 演算?;?Berardi 的工作,Barendregt 提議了 Lambda立方體來系統(tǒng)化純有類型 lambda 演算(包括簡單類型 lambda 演算,系統(tǒng) F,LF 和構(gòu)造演算)之間的關(guān)系。
某些有類型 lambda 演算介入“子類型”的概念,就是說如果 A{\displaystyle A} 是 B{\displaystyle B} 的子類型,則類型 A{\displaystyle A} 的所有項(xiàng)也有類型 B{\displaystyle B}。帶有子類型的有類型 lambda 演算是帶有合取類型和 F≤ ≤ -->{\displaystyle F^{\leq }} (F-sub) 的簡單類型 lambda 演算。
迄今提到的所有西,除了無類型 lambda 演算是例外,都是“強(qiáng)規(guī)范化”的:所有計(jì)算都會(huì)終止。結(jié)論是他們作為邏輯都是自恰的,就是說這里有無居留(uninhabited)類型。但是存在著不是強(qiáng)規(guī)范化的有類型 lambda 演算。比如帶有所有類型的一個(gè)類型(Type : Type)的依賴類型 lambda 演算由于Girard悖論而不是強(qiáng)規(guī)范化的。這個(gè)系統(tǒng)也是最簡單的純類型系統(tǒng),它是推廣 Lambda立方體的一種形式化。有明確的遞歸組合子的系統(tǒng),比如 Gordon Plotkin 的 PCF,不是規(guī)范化的,但是它們不意圖被解釋為邏輯。實(shí)際上,PCF(可計(jì)算函數(shù)的編程語言)是元典型(prototypical)的有類型的函數(shù)式編程語言,這里的類型被用來確保程序是有良好行為的而不必須是終止的。
應(yīng)用
有類型 lambda 演算在為編程語言設(shè)計(jì)新類型系統(tǒng)的時(shí)候扮演了關(guān)鍵性角色;這里類型能力通常捕獲了程序想要的性質(zhì),比如程序不會(huì)導(dǎo)致內(nèi)存訪問違規(guī)。
在編程中,強(qiáng)類型編程語言的例程(函數(shù),過程,方法)密切關(guān)聯(lián)于有類型 lambda 表達(dá)式。Eiffel有一個(gè)“內(nèi)線代理”概念,使得有可能直接定義和操縱有類型 lambda 表達(dá)式,通過這種表達(dá)式如 agent (p: PERSON): STRING do Result := p.spouse.name end,指示表示返回一個(gè)人配偶的名字的一個(gè)函數(shù)的一個(gè)對象。
參見
簡單類型lambda演算
系統(tǒng)F
邏輯框架
構(gòu)造演算
直覺類型論
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價(jià)值
- 一般般
- 沒價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}