<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA之路

    MDA,UML,XML,Eclipse及Java相關(guān)的Blog
    posts - 53, comments - 494, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Lambda演算學(xué)習(xí)筆記

    Posted on 2005-05-15 20:53 wxb_nudt 閱讀(20015) 評論(42)  編輯  收藏 所屬分類: 技術(shù)雜談

    前言

    blog好久沒有更新了,上次更新還是428號。這段時(shí)間實(shí)在是很忙,4月的最后一周為了趕一篇論文,累死累活,最后在tom的幫助下總算在430號截稿之前完成了。429號的晚上一直改到了第二天凌晨3點(diǎn)才睡。

    430號下午回家,可是沒有料到長沙的八一路修路,路上堵車。打的從學(xué)校到火車站花了40分鐘,平時(shí)只要15分鐘的。于是在最后10分鐘一路狂奔,終于在開車前1分鐘上車了。

    五一長假的第一天去了雙峰山,云霧繚繞之中真的頗有幾分氣勢,可惜數(shù)碼照片全部都拍得很模糊,早知道我就自己動(dòng)手好了。五一歸來馬上開始整理軟件工程相關(guān)資料,一共花了3天時(shí)間,還剩軟件標(biāo)準(zhǔn)化的部分沒有整理完畢。

    接下來的三天,一直在學(xué)習(xí)lambda演算的相關(guān)內(nèi)容,由于資料不全,學(xué)習(xí)的過程很是痛苦。國內(nèi)的大學(xué)好像基本上不開設(shè)Functional Programming課程,因此FP的基礎(chǔ)知識(shí)lambda演算也講得很少。不過好歹在網(wǎng)上找到了一些資料,加上數(shù)理邏輯中的少量介紹,明白了一個(gè)大致。相關(guān)資料網(wǎng)址會(huì)列在最后。

    Lamda演算簡介

    Wikipedia(維基百科全書)中關(guān)于lambda演算的解釋如下:

    The lambda calculus is a formal system designed to investigate function definition, function application, and recursion. It was introduced by Alonzo Church and Stephen Cole Kleene in the 1930s; Church used the lambda calculus in 1936 to give a negative answer to the Entscheidungsproblem. The calculus can be used to cleanly define what a computable function is. The question of whether two lambda calculus expressions are equivalent cannot be solved by a general algorithm, and this was the first question, even before the halting problem, for which undecidability could be proved. Lambda calculus has greatly influenced functional programming languages, especially Lisp.

    Lambda演算是一個(gè)形式系統(tǒng),它被設(shè)計(jì)出來用來研究函數(shù)定義,函數(shù)應(yīng)用和遞歸。它是在二十世紀(jì)三十年代由Alonzo Church Stephen Cole Kleene發(fā)明的。Church1936年使用lambda演算來證明了判定問題是沒有答案的。Lambda演算可以用來清晰的定義什么是一個(gè)可計(jì)算的函數(shù)。兩個(gè)lambda演算表達(dá)式是否相等的問題不能夠被一個(gè)通用的算法解決,這是第一個(gè)問題,它甚至排在停機(jī)問題之前。為了證明停機(jī)問題是沒有答案的,不可判定性能夠被證明。Lambda演算對于函數(shù)式編程語言(例如lisp)有重大的影響。

    同時(shí),數(shù)理邏輯中對于lambda演算的介紹就簡單得多:

    λ-演算可以說是最簡單、最小的一個(gè)形式系統(tǒng)。它是在二十世紀(jì)三十年代由Alonzo Church Stephen Cole Kleene發(fā)明的。至今,在歐洲得到了廣泛的發(fā)展。可以說,歐洲的計(jì)算機(jī)科學(xué)是從λ-演算開始的,而現(xiàn)在仍然是歐洲計(jì)算機(jī)科學(xué)的基礎(chǔ),首先它是函數(shù)式程序理論的基礎(chǔ),而后,在λ-演算的基礎(chǔ)上,發(fā)展起來的π-演算、χ-演算,成為近年來的并發(fā)程序的理論工具之一,許多經(jīng)典的并發(fā)程序模型就是以π-演算為框架的。

    這里不由得想起一位我尊敬的老師的博士畢業(yè)論文就是關(guān)于π-演算的,可惜這位老師已經(jīng)去別的學(xué)校了。

    Lambda演算表達(dá)了兩個(gè)計(jì)算機(jī)計(jì)算中最基本的概念“代入”和“置換”。“代入”我們一般理解為函數(shù)調(diào)用,或者是用實(shí)參代替函數(shù)中的形參;“置換”我們一般理解為變量換名規(guī)則。后面會(huì)講到,“代入”就是用lambda演算中的β-歸約概念。而“替換”就是lambda演算中的α-變換。

    Lambda演算系統(tǒng)的形式化定義

    維基百科全書上面的對于lambda演算的定義不是很正規(guī),但是說明性的文字較多。而數(shù)理邏輯中的定義很嚴(yán)密,不過沒有說明不容易理解。我盡可能把所有資料結(jié)合起來說明lambda演算系統(tǒng)的定義。

    字母表

    lambda演算系統(tǒng)中合法的字符如下:

    1.         x1x2x3變元(變元的數(shù)量是無窮的,不能在有限步驟內(nèi)窮舉,這個(gè)很重要,后面有定理是根據(jù)這一點(diǎn)證明的)

    2.         à 歸約

    3.         等價(jià)

    4.         λ,(,)  (輔助工具符號,一共有三個(gè),λ和左括號右括號)

    所有能夠在lambda演算系統(tǒng)中出現(xiàn)的合法符號只有以上四種,其他符號都是非法的。例如λx.x+2,如果沒有其他對于+符號的說明,那么這就是一個(gè)非法的λ演算表達(dá)式。

    λ-項(xiàng)

    λ-項(xiàng)在一些文章中也稱為λ表達(dá)式(lambda expression),它是由上面字母表中的合法字符組成的表達(dá)式,合法的表達(dá)式組成規(guī)則如下:

    1.         任一個(gè)變元是一個(gè)項(xiàng)

    2.         MN是項(xiàng),則(MN)也是一個(gè)項(xiàng)  function application,函數(shù)應(yīng)用)

    3.         M是一個(gè)項(xiàng),而x是一個(gè)變元,則(λx.M)也是一個(gè)項(xiàng)  function abstraction,函數(shù)抽象)

    4.         僅僅由以上規(guī)則歸納定義得到的符號串是項(xiàng)

    說明1λ-項(xiàng)是左結(jié)合的,意思就是若f x y都是λ-項(xiàng),那么f x y(f x) y

    說明2(λx.M)這樣的λ-項(xiàng)被稱為函數(shù)抽象,原因是它常常就是一個(gè)函數(shù)的定義,函數(shù)的參數(shù)就是變量x,函數(shù)體就是M,而函數(shù)名稱則是匿名的。用一個(gè)不恰當(dāng)?shù)谋扔鱽碚f,我們通常認(rèn)為的函數(shù)f(x)=x+2,可以被表達(dá)為λx.x+2。因?yàn)椋俏炊x的,所以這個(gè)比喻只是為了方便理解而已。

    說明3MN這樣的λ-項(xiàng)被稱為函數(shù)應(yīng)用,原因是它表達(dá)了將M這個(gè)函數(shù)應(yīng)用到N這個(gè)概念。沿用上面的例子f(x)=x+2,那么f(2)=2+2;同樣的λx.x+2表達(dá)了f(x)的概念,那么(λx.x+22表達(dá)了f(2)的概念。其中Mλx.x+2N2,所以MN=(λx.x+22

    說明4:注意說明3只是為了方便理解,但是還存在很多與直觀理解不符合的地方。例如xy也是一個(gè)合法的λ-項(xiàng),它們也是MN形式的,不過xy都僅僅是一個(gè)變量而已,談不上函數(shù)代入。

        上面是λ-項(xiàng)的形式化定義,有一些是可以與函數(shù)理論直觀聯(lián)系的,而另一些只是說明這個(gè)λ-項(xiàng)是合法的,不一定有直觀的字面意義。

    公式

        MNλ-項(xiàng),則MàNM=N是公式。

    λ-項(xiàng)中的變量自由出現(xiàn)法則

    在一個(gè)λ-項(xiàng)中,變量要么是自由出現(xiàn)的,要么是被一個(gè)λ符號綁定的。還是以函數(shù)的方式來理解變量的自由出現(xiàn)和綁定。例如f(x)=xy這個(gè)函數(shù),我們知道x是和函數(shù)f相關(guān)的,因?yàn)樗?/SPAN>f的形參,而y則是和f無關(guān)的。那么在λx.xy這個(gè)λ-項(xiàng)中,x就是被λ綁定的,而y則是自由出現(xiàn)的變量。

    直觀的理解,被綁定的變量就是作為某個(gè)函數(shù)形參的變量,而自由變量則是不作為任何函數(shù)形參的變量。

    Lambda變量綁定規(guī)則:

    1.         在表達(dá)式x中,如果x本身就是一個(gè)變量,那么x就是一個(gè)單獨(dú)的自由出現(xiàn)。

    2.         在表達(dá)式λ x. E中,自由出現(xiàn)就是E中所有的除了x的自由出現(xiàn)。這種情況下在E中所有x的出現(xiàn)都稱為被表達(dá)式中x前面的那個(gè)λ所綁定。

    3.         在表達(dá)式(MN )中,變量的自由出現(xiàn)就是MN中所有變量的自由出現(xiàn)。

    另一種關(guān)于變量的自由出現(xiàn)的規(guī)則也許更直接:

    1.         free(x) = x

    2.         free(MN) = free(M) è free(N)

    3.         free(lx ? M) = free(M) {x}

    為什么要花大力氣來給出變量自由出現(xiàn)的規(guī)則,是因?yàn)楹竺娴暮芏嗟胤揭玫阶兞康淖杂沙霈F(xiàn)的概念。例如α-變換和β-歸約。

    例子:分析λf.λx.fx中變量的自由出現(xiàn)和綁定狀況。

    λf.λx.fx =λf.E, E=λx.fx

    E=λx.A, A=A1A2, A1=f, A2=x

    所以在Afx都是自由出現(xiàn)的,

    所以Ex是綁定λ x

    所以整個(gè)公式中f是綁定第一個(gè)λ f的。

    λ x的控制域

    來看兩個(gè)λ-項(xiàng),λx.xxλx.(xx)有何不同?根據(jù)左結(jié)合的法則,λx.xx(λx.x)x,其中第一個(gè)x是被λ綁定的,而第二個(gè)x則是自由出現(xiàn)的。而λx.(xx)中兩個(gè)x都是被λ綁定的。這表明了兩個(gè)λ-項(xiàng)中λx的控制域是不同的。

    我們知道謂詞演算中量詞也是有控制域的,λx的控制域與它們類似,這里就不給出詳細(xì)的定義了。其實(shí)也很直觀。

    α-變換(α-conversion

    α-變換規(guī)則試圖解釋這樣一個(gè)概念,λ演算中約束變量的名稱是不重要的,例如λx.xλy.y是相同的函數(shù)。因此,將某個(gè)函數(shù)中的所有約束變量全部換名是可以的。但是,換名需要遵循一些約束。

    首先是一個(gè)說明:如果MNλ-項(xiàng),xM中有自由出現(xiàn),若以N置換M中所有x的自由出現(xiàn)(M中可能含有x的約束出現(xiàn)),我們得到另一個(gè)λ-項(xiàng),記為M[x/N]

    α-變換規(guī)則如下:

    λx.M=λy.M[x/y]  如果y沒有在M中自由出現(xiàn),并且只要y替換M中的x,都不會(huì)被M中的一個(gè)λ綁定。

    例子:λx.( λx.x)x = λy(λx.x)y

    α-變換主要用來表達(dá)函數(shù)中的變量換名規(guī)則,需要注意的是被換名的只能是M(函數(shù)體)中變量的自由出現(xiàn)。

    β-歸約

    β-歸約表達(dá)的是函數(shù)應(yīng)用或者函數(shù)代入的概念。前面提到MN是合法的λ-項(xiàng),那么MN的含義是將M應(yīng)用到N,通俗的說是將N作為實(shí)參代替M中的約束變量,也就是形參。β-歸約的規(guī)則如下:

    (λx.M)N à M[x/N] 如果N中所有變量的自由出現(xiàn)都在M[x/N]中保持自由出現(xiàn)

    β-歸約是λ演算中最重要的概念和規(guī)則,它是函數(shù)代入這個(gè)概念的形式化表示。

    一些例子如下:

    (lx.ly.y x)(lz.u) ? ly.y(lz.u)

    (lx. x x)(lz.u) ? (lz.u) (lz.u)

    (ly.y a)((lx. x)(lz.(lu.u) z)) ? (ly.y a)(lz.(lu.u) z)

    (ly.y a)((lx. x)(lz.(lu.u) z)) ? (ly.y a)((lx. x)(lz. z))

    (ly.y a)((lx. x)(lz.(lu.u) z)) ? ((lx. x)(lz.(lu.u) z)) a

    需要多加練習(xí)才能習(xí)慣這種歸約。

    η-變換(η-conversion

    η-變換表達(dá)了“外延性”(extensionality)的概念,在這種上下文中,兩個(gè)函數(shù)被認(rèn)為是相等的“當(dāng)且僅當(dāng)”對于所有的參數(shù),它們都給出同樣的結(jié)果。我理解為,對于所有的實(shí)參,通過β-歸約都能得到同樣的λ-項(xiàng),或者使用α-變換進(jìn)行換名后得到同樣的λ-項(xiàng)。

    例如λx.fxf相等,如果x沒有在f中自由出現(xiàn)。

    λ演算的公理和規(guī)則組成

    這一段來自《數(shù)理邏輯與集合論》(第二版 清華大學(xué)出版社)。還修正了其中的一個(gè)錯(cuò)誤。

    1.         (λx.M)N à M[x/N] 如果N中所有變量的自由出現(xiàn)都在M[x/N]中保持自由出現(xiàn)

    2.         MàM

    3.         MàN, NàL => MàL  (原書中此處錯(cuò)誤)

    4.         MàM’=>ZMàZM’

    5.         MàM’=>MZàM’Z

    6.         MàM’=>λx. M àλx. M’

    7.         MàM’=>M=M’

    8.         M=M’=>M’=M

    9.         M=N,N=L=>M=L

    10.     M=M’ => ZM = ZM’

    11.     M=M’ => MZ = M’Z

    12.     M=M’ =>λx. M =λx. M’

    如果某一公式MàN或者M=N可以用以上的公理推出,則記為λ├MàNλ├MN

    范式

    如果一個(gè)λ-項(xiàng)M中不含有任何形為((λx.N1)N2)的子項(xiàng),則稱M是一個(gè)范式,簡記為n.f.。如果一個(gè)λ-項(xiàng)M通過有窮步β-歸約后,得到一個(gè)范式,則稱Mn.f.,沒有n.f.λ-項(xiàng)稱為n.n.f.

        通俗的說法是,將一個(gè)λ-項(xiàng)進(jìn)行β-歸約,也就是進(jìn)行實(shí)參代入形參的過程,如果通過有窮步代入,可以得到一個(gè)不能夠再進(jìn)行代入的λ-項(xiàng),那么這就是它的范式。如果無論怎樣代入,總存在可以繼續(xù)代入的子項(xiàng),那么它就沒有范式。

    例子

    M = λx.(x((λy.y)x))y,則Mà y((λy.y)y) à yyM有一個(gè)n.f.

    例子

    M =λx.(xx) λx.(xx),則Màλx.(xx) λx.(xx)=M。注意到M的歸約只有唯一的一個(gè)可能路徑,所以M不可能歸約到n.f.。所以Mn.n.f.

    注意這個(gè)λx.(xx) λx.(xx)λ演算的協(xié)調(diào)性研究中是一個(gè)比較經(jīng)典的項(xiàng)。((λ x. x x) (λ x. x x))被稱為Ω, ((λ x. x x x) (λ x. x x x))被稱為 Ω2

    不動(dòng)點(diǎn)理論

    Λ表示所有的λ-項(xiàng)組成的集合。

    定理:對于每一個(gè)F∈Λ,存在M∈Λ,使得λ├FM=M

    證明:定義wλx.F(xx),又令Mww,則有λ├Mww(λx.F(xx))wF(ww)=FM

    證明是非常巧妙的,對于每個(gè)F,構(gòu)造出的這個(gè)ww剛好是可以通過一次β-歸約得到F(ww)FM,如果再歸約一次就得到F(FM),這樣可以無限次的歸約下去得到F(F(F(F…(FM)…)))

    Church-Rosser定理及其等價(jià)定理

    這兩個(gè)定理告訴我們這樣一個(gè)事實(shí):如果M有一個(gè)n.f.,則這個(gè)n.f.是唯一的,任何β-歸約的路徑都將終止,并且終止到這個(gè)n.f.

    Church-Rosser定理:如果λ├M=N,則對某一個(gè)Zλ├MàZ并且λ├NàZ

    與之等價(jià)的定理如下,

    Diamond Property定理:如果MàN1,MàN2,則存在某一Z,使得N1àZN2àZ

    后記

    最后兩個(gè)定理的證明沒有怎么看懂,所以沒有在筆記中記下。另外,前天在網(wǎng)上訂購的《程序設(shè)計(jì)語言:概念和結(jié)構(gòu)》第二版剛剛拿到手,其中有關(guān)于λ演算的一章。應(yīng)該也對我大有幫助,待看完再說。

    學(xué)習(xí)λ演算的初衷是了解一些程序設(shè)計(jì)的最基本原理,沒想到最后還是繞到形式系統(tǒng)和數(shù)理邏輯這兒來了。不過,形式化表達(dá)的λ演算更清晰。

    國內(nèi)大學(xué)雖然也開程序設(shè)計(jì)的課程,不過好像都是pascalc/c++之類,關(guān)于程序設(shè)計(jì)的本質(zhì)基礎(chǔ)的程序好像并不多。隨著大學(xué)擴(kuò)招,中國有望在很短的時(shí)間內(nèi)成為世界上程序員最多的國家,如果僅僅只學(xué)命令式和面向?qū)ο蟮某绦蛟O(shè)計(jì),一定是不夠的。函數(shù)式和邏輯式程序設(shè)計(jì)語言也是要學(xué)學(xué)的啊。

    文中肯定有很多錯(cuò)漏,希望看出來的人給我留言。

    參考文獻(xiàn)

    School of Computer Science and Software Engineering, Faculty of Information Technology, Monash University, Australia 3800

    這個(gè)大學(xué)的FP課程中的Lambda演算相關(guān)部分

    http://www.csse.monash.edu.au/~lloyd/tildeFP/Lambda/Ch/

    wikipedialambda演算相關(guān)介紹

    http://en.wikipedia.org/wiki/Lambda_calculus

    《數(shù)理邏輯與集合論》第二版 清華大學(xué)出版社

     


    評論

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2005-05-16 07:34 by 月光亂亂
    小同志 辛苦了!

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2005-06-01 18:41 by oneday
    blog對lamda的解釋很不錯(cuò)。比一般教科書上的要清楚的多。對我的幫助很大,你是老師么? :)
    國內(nèi)有一本南大出版的巴倫德萊赫特的<lamda演算的語法和語義>,也可以作為相應(yīng)的參考書。
    我們開了程序語義學(xué)的課,但我認(rèn)為這種類型的課目前在國內(nèi)很難上好。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2005-06-02 11:14 by wxb_nudt
    我不是老師,只是學(xué)生。
    Lambda演算其實(shí)和我的研究方向不沾邊,只不過一次和別人討論時(shí)提起。有感于教材和網(wǎng)上素材不完善,因此整理了一下而已。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2005-11-12 21:45 by xephang
    哪位同志有進(jìn)程代數(shù),派演算方面的書和資料?

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2005-12-05 21:03 by Pesky
    贊,我覺得比我們老師講的好多了

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2006-01-17 14:42 by 冰島
    我們也要學(xué),倒來倒去,不知道有啥用處!

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2006-02-03 01:55 by 李奇
    我在劍橋大學(xué)學(xué)計(jì)算機(jī),我們這里就開了functional Language Programming,感覺你說得不錯(cuò),謝謝你,呵呵,感覺很有收獲~~

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2007-01-26 05:26 by JGG
    我在法國學(xué)計(jì)算機(jī),本學(xué)期也開了個(gè)這個(gè)課
    你寫的東西很有用
    謝謝

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2007-03-16 10:11 by 逸宇行空
    最近又收集了點(diǎn)資料,基本上是結(jié)合樓主的這篇文章,Wiki中的介紹,再就是<<類型和程序設(shè)計(jì)語言>>,,歡迎來討論并指正
    http://blog.sina.com.cn/templarwzy

    樓主你是長沙的? 科大的吧? 你說的老師是李舟軍教授嗎?

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2007-03-16 16:46 by wxb_nudt
    @逸宇行空
    對,你都說對了。現(xiàn)在我已經(jīng)畢業(yè)到北京了。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2007-03-18 02:02 by skAzurina
    我手頭上有一本書,叫做《計(jì)算機(jī)語言的形式語義》,科學(xué)出版社出版的,作者陸汝鈐(音同錢),ISBN為7030030222。
    這本書在第一章第一節(jié)就講了λ運(yùn)算,很清楚,比blog主的內(nèi)容還多一點(diǎn)。感興趣的可以去看看。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2007-07-14 19:24 by yujian
    寫得不錯(cuò),以前沒有看懂,今天看了你的文章,感覺非常直白,恍然大悟。

    #  'β.x"  回復(fù)  更多評論   

    2007-08-02 22:04 by 江順
    以后

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2007-10-18 21:17 by llin_zou
    大張見識(shí)~

    # re: Lambda演算學(xué)習(xí)筆記[未登錄]  回復(fù)  更多評論   

    2007-11-11 19:14 by liu
    很喜歡看你blog,寫的東西都很不錯(cuò)!

    # re: Lambda演算學(xué)習(xí)筆記[未登錄]  回復(fù)  更多評論   

    2008-01-18 16:11 by cy
    寫得不錯(cuò),辛苦你了.

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2008-11-02 18:08 by miles
    有個(gè)地方不是很明白:
    β-歸約:“通俗的說是將N作為實(shí)參代替M中的約束變量”

    (lx. x x)(lz.u) ® (lz.u) (lz.u)
    這里面是將兩個(gè)x都代替了,但由前文的“λ x的控制域”理解:第一個(gè)x是在λ的控制之下,但第二個(gè)x不是;而“β-歸約”是說“以實(shí)參代替約束變量”,也就是說我不太明白為什么將第二個(gè)x,也就是自由變量也給代替掉了?
    或許我還有一些沒能理解透徹的地方,請指教。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2008-11-04 11:58 by miles
    @miles
    我自己想明白了,謝謝

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2008-11-21 08:11 by 微笑的撒旦
    很不錯(cuò),謝謝!
    但是,能不能用幾句話概括一下到底什么Lambda演算?
    比如:基于字母表中,通過什么方法,最后解決什么問題。有個(gè)總結(jié)性的說明,理解起來應(yīng)該更容易。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2009-03-07 21:15 by Winston
    博主對lambda calculus的理解有至關(guān)重要的錯(cuò)誤。關(guān)于lambda作用域的見解是很明顯的錯(cuò)誤。lambda calculus不符合左結(jié)合的特征,即,lambda x.x x不等價(jià)于(lambda x.x) x而是等價(jià)于lambda x. (x x)。在您論述beta reduction的時(shí)候已經(jīng)能清楚的看到和這一錯(cuò)誤觀點(diǎn)的矛盾之處了。請嚴(yán)謹(jǐn)對待之。以上。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2009-03-07 21:17 by Winston
    當(dāng)然,博主對lambda calculus的分析還是淺顯易懂的,初學(xué)者應(yīng)該可以受益匪淺。
    無意冒犯,但請嚴(yán)謹(jǐn)求證,不要誤人子弟。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2009-03-10 20:13 by wxb_nudt
    @Winston
    謝謝指教,不過這篇blog是幾年前寫的,都忘記了。大家看的時(shí)候注意點(diǎn)吧。最近忙,估計(jì)沒時(shí)間更新了。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2009-06-13 12:39 by lightest
    其實(shí)Lambda演算的好處是甚麼? 比起圖靈機(jī)

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2009-09-14 00:07 by 陳星
    lamda演算其實(shí)有很多奇怪的性質(zhì),尤其是對于遞歸函數(shù)的研究,應(yīng)該是一種十分有利的工具,我是聽人說的,自己并不明白,希望博主再努力講講。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2009-11-15 14:16 by sigma
    比維基百科上說得好。但并不是通俗易懂。不過鑒于是作者的學(xué)習(xí)筆記,沒有過多可講,還是感謝你!

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2010-07-16 17:58 by 王勃
    @Winston
    博主寫的是對的,你理解錯(cuò)了

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2010-07-16 21:46 by 王勃
    @王勃
    我錯(cuò)了,忽略我的評論吧

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2010-10-26 10:24 by 饒高琦
    樓主的幫助太大了,最近在做數(shù)理邏輯的大作業(yè),實(shí)在感謝,如獲至寶!

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2011-01-19 12:14 by 長風(fēng)(@wildAir)
    請問“λ x的控制域”部分是不是講錯(cuò)了?

    在wiki中l(wèi)ambda calculus的Formal definition一節(jié)中,有這樣的描述:“The body of an abstraction extends as far right as possible”,也就是說λx.ab 等價(jià)于 λx.(ab),而不是λ(x.a) b。
    所謂的“左結(jié)合”法則,指的是應(yīng)用(application),而非抽象(abstraction): M N P 等價(jià)于 (M N) P。

    請核實(shí)一下,我是初學(xué)者,也不能肯定是這邊出錯(cuò)了。
    謝謝!

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2011-05-10 22:42 by 游客
    南京大學(xué)計(jì)算機(jī)研究生課程--計(jì)算入門。開有λ-演算

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2012-07-22 14:49 by 墨燃
    @長風(fēng)(@wildAir) 嗯 同感 我最近剛開始學(xué)習(xí)的課程與這個(gè)有關(guān) application binds to the left,abstraction binds to the right lambda x. x y = lambda x. (x y) 不等于 (lambda x. x) y 請核實(shí)一下 剛學(xué) 迷糊中

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2012-08-28 04:04 by koven
    λ-項(xiàng)中的變量自由出現(xiàn)法則 倒數(shù)第三行,我猜應(yīng)該是:
    “所以在A中f和x都(不)是自由出現(xiàn)的”

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2012-08-28 04:09 by koven
    α-變換(α-conversion)倒數(shù)第二行例子是否應(yīng)該是:

    例子:λx.( λx.x)x = λy.(λx.x)y

    # re: Lambda演算學(xué)習(xí)筆記[未登錄]  回復(fù)  更多評論   

    2013-10-22 00:42 by young
    @Winston
    我也有這個(gè)疑問,過幾天去問教授看看到底哪個(gè)是對的。

    # re: Lambda演算學(xué)習(xí)筆記[未登錄]  回復(fù)  更多評論   

    2013-10-22 00:47 by young
    @xephang
    不知道你說的進(jìn)程代數(shù)指的什么意思,我們學(xué)過一門課是關(guān)于進(jìn)程模擬的,教授的教學(xué)計(jì)劃中設(shè)計(jì)到PI演算,不過后來沒講這部分內(nèi)容,在給出的參考資料中有一本是:D.Sangiorgi, D.Walker, The Pi-Calculus -- A Theory of Mobile Processes, Cambridge University Press, 2001不知道對你有沒有用。

    # re: Lambda演算學(xué)習(xí)筆記[未登錄]  回復(fù)  更多評論   

    2013-10-23 05:29 by young
    @skAzurina
    這本書現(xiàn)在絕版了吧。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2014-06-19 16:15 by Rogerlee
    深入淺出,很好。請問一點(diǎn)地方:
    范式一節(jié)中M = λx.(x((λy.y)x))y,則Mà y((λy.y)y) à yy。
    為什么M進(jìn)行規(guī)約運(yùn)算之后,只有兩個(gè)y。
    M里面的兩個(gè)x都是綁定形式的吧,那么不應(yīng)該是
    Mà y((λy.y)y)y à y((y)y)y à yyyy

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2014-06-19 16:22 by Rogerlee
    @Rogerlee
    問完問題,就是容易靈光乍現(xiàn)。我明白了。謝謝你的博客。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2014-06-26 20:58 by 藍(lán)鯨雞腿
    感謝樓主 對課程有所幫助

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2015-04-02 03:06 by qilin
    感謝博主。

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2016-06-01 18:38 by 慕容淵
    The question of whether two lambda calculus expressions are equivalent cannot be solved by a general algorithm, and this was the first question, even before the halting problem, for which undecidability could be proved.

    博主這段翻譯是有問題的,后面那個(gè) for which 是修飾停機(jī)問題的。
    正確的涵義應(yīng)該是這樣:
    沒有一個(gè)通用的算法可以解決判定兩個(gè) lambda 計(jì)算表達(dá)式是否相等的問題。這是 lambda 計(jì)算的的頭號問題,甚至排在停機(jī)問題之前。(for which)停機(jī)問題的不可決定性(也就是說元圖靈機(jī)無法判定給定的程序是否在給定的輸入上一定停止)是可以被證明的。

    而博主翻譯的
    “為了證明停機(jī)問題是沒有答案的,不可判定性能夠被證明。”
    是有問題的。

    當(dāng)然博主的這篇文章仍然很棒,基本上正確表達(dá)了維基百科 lambda calculus 詞條的前面部分。對于學(xué)習(xí) LISP 系語言(個(gè)人認(rèn)為,尤其scheme)的同學(xué)來說,博主的這篇文章是有助益的。我在搜索某個(gè)問題的時(shí)候來到了這個(gè)鏈接,原來是幾年前的。
    挖坑有理,博主勿怪^_^

    # re: Lambda演算學(xué)習(xí)筆記  回復(fù)  更多評論   

    2016-06-01 19:01 by 慕容淵
    暈。再看了下文章發(fā)表在 05 年,居然是11年前,博主是前輩了,失敬失敬...
    主站蜘蛛池模板: 可以免费观看一级毛片黄a| 亚洲av福利无码无一区二区| 亚洲福利电影一区二区?| 成年免费a级毛片| 国产精品视频永久免费播放| 国产亚洲人成网站观看| 色婷婷精品免费视频| 无人影院手机版在线观看免费 | 亚洲Av永久无码精品黑人| 日韩插啊免费视频在线观看| 亚洲真人日本在线| 亚洲AV日韩AV一区二区三曲| 99爱在线精品免费观看| 亚洲2022国产成人精品无码区| 成人精品综合免费视频| 日本一区免费电影| 亚洲伊人久久大香线蕉结合| 免费无码VA一区二区三区| 亚洲日韩精品一区二区三区无码 | 女人18一级毛片免费观看| 亚洲色欲或者高潮影院| 免费无码又爽又刺激一高潮| 亚洲精品国产自在久久| 黄色网址免费观看| 亚洲国产人成网站在线电影动漫| 亚洲熟妇无码久久精品| 日韩精品极品视频在线观看免费| 精品久久久久久亚洲| 国产成人无码免费网站| 亚洲A丁香五香天堂网| 精品视频免费在线| 国产国产人免费视频成69大陆| 日本亚洲色大成网站www久久 | 四虎永久在线精品免费网址| 亚洲国产综合人成综合网站00| 久别的草原电视剧免费观看| 久久久青草青青亚洲国产免观| 成人无码精品1区2区3区免费看| 亚洲午夜无码片在线观看影院猛| 色吊丝性永久免费看码| 亚洲高清偷拍一区二区三区|