看到乙個關於lambda的非正式描述,記下來

2021-08-29 04:32:54 字數 2199 閱讀 3156

(λ x. x 3) (λ x. x+2) 與 (λ x. x + 2) 3 與 3 + 2

是等價的。有兩個引數的函式可以通過 lambda 演算這麼表達:乙個單一引數的函式的返回值又是乙個單一引數的函式 (參見 currying)。例如,函式 f(x, y) = x - y 可以寫作 λ x. λ y. x - y。下述三個表示式:

(λ x. λ y. x - y) 7 2 與 (λ y. 7 - y) 2 與 7 - 2

也是等價的。然而這種 lambda 表示式之間的等價性無法找到乙個通用的函式來判定。

並非所有的 lambda 表示式都可以規約至上述那樣的確定值,考慮

(λ x. x x) (λ x. x x)

或(λ x. x x x) (λ x. x x x)

然後試圖把第乙個函式作用在它的引數上。 (λ x. x x) 被稱為 ω 組合子 (combinator),((λ x. x x) (λ x. x x)) 被稱為 ω,而 ((λ x. x x x) (λ x. x x x)) 被稱為 ω2,以此類推。

若僅形式化函式作用的註記而不允許 lambda 表示式,就得到了組合子邏輯 (combinatory logic)。

α-變換

alpha-變換規則表達的是,被繫結變數的名稱是不重要的。比如說 λx.x 和 λy.y 是同乙個函式。儘管如此,這條規則並非像它看起來這麼簡單,關於被繫結的變數能否由另乙個替換有一系列的限制。

alpha-變換規則陳述的是,若 v 與 w 均為變元,e 是乙個 lambda 表示式,同時 e[v/w] 是指把表示式 e 中的所有的 v 的自由出現都替換為 w,那麼在 w 不是 e 中的乙個自由出現,且如果 w 替換了 v,w 不會被 e 中的 λ 繫結的情況下,有

λ v. e == λ w. e[v/w]

這條規則告訴我們,例如 λ x. (λ x. x) x 這樣的表示式和 λ y. (λ x. x) y 是一樣的。

β-消解

beta-消解規則表達的是函式作用的概念。它陳述了若所有的 e' 的自由出現在 e [v/e' ] 中仍然是自由的情況下,有

((λ v. e ) e' ) == e [v/e' ]

成立。== 關係被定義為滿足上述兩條規則的最小等價關係 (即在這個等價關係中減去任何乙個對映,它將不再是乙個等價關係)。

對上述等價關係的乙個更具操作性的定義可以這樣獲得:只允許從左至右來應用規則。不允許任何 beta 消解的 lambda 表示式被稱為正規化。並非所有的 lambda 表示式都存在與之等價的正規化,若存在,則對於相同的形式引數命名而言是唯一的。此外,有乙個演算法使用者計算正規化,不斷地把最左邊的形式引數替換為實際引數,直到無法再作任何可能的消解為止。這個演算法當且僅當 lambda 表示式存在乙個正規化時才會停止。church-rosser 定理 說明了,當且僅當兩個表示式等價時,它們會在形式引數換名後得到同乙個正規化。

[編輯]

η-變換

前兩條規則之後,還可以加入第三條規則,eta-變換,來形成乙個新的等價關係。eta-變換表達的是外延性的概念,在這裡外延性指的是,兩個函式對於所有的引數得到的結果都一致,當且僅當它們是同乙個函式。eta-變換可以令 λ x . f x 和 f 相互轉換,只要 x 不是 f 中的自由出現。下面說明了為何這條規則和外延性是等價的:

若 f 與 g 外延地等價,即,f a == g a 對所有的 lambda 表示式 a 成立,則當取 a 為在 f 中不是自由出現的變數 x 時,我們有 f x == g x,因此 λ x . f x == λ x . g x,由 eta-變換 f == g。所以只要 eta-變換是有效的,會得到外延性也是有效的。

相反地,若外延性是有效的,則由 beta-消解,對所有的 y 有 (λ x . f x) y == f y,可得 λ x . f x == f,即 eta-變換也是有效的。

遞迴是一種以函式自身迭代自身變元的演算法,一般是通過函式自身來定義函式的方式實現。表面看來 lambda 演算不允許遞迴,其實這是一種對遞迴的誤解。考慮階乘函式 f(n) 一般這樣遞迴地定義:

f(n) = 1, 若 n = 0; n·f(n-1), 若 n>0.

λ語言:

fact = λ n. n (λ u. mult n (fact (pred n))) 1

用 y-組合子 在 λ語言 中合法地定義:

fact = y (λ g. λ n. n (λ u. mult n (g (pred n))) 1)

y = λ f. ((λ x. f (x x)) (λ x. f (x x)))

看到乙個有趣的東東。

這段時間忙著搬新公司,一直也沒上來寫東西,今天在面試簡歷的看到乙個非常有趣的自我介紹,原文如下 自我評價 本人安于工作,誠實肯幹,勇於挑戰和接受新知識 現大專在讀 相信我的努力定能為你帶來一分意外的收穫。相信他的能力吧 擅長騙取弱小可欺的女孩的身體及錢財,弱女子到手後要求她買膝上型電腦,包括在兩小孩...

看到了乙個真實的自己

剛才在部落格生活裡閒逛,看到爪友已逝老友寫的一篇隨筆,裡面有一段如下 離開了校園,選擇了離家很遠的地方去工作,家人不理解,我只是不想在父母的關係網蔭庇下去度過自己的生活,想自己在乙個陌生的城市親手去開創一番,建立自己的網路,我知道自己將為此付出的代價,已經失去了最愛的人,我想有個堅強的外表,可還是痛...

看到了乙個真實的自己

剛才在部落格生活裡閒逛,看到爪友已逝老友寫的一篇隨筆,裡面有一段如下 離開了校園,選擇了離家很遠的地方去工作,家人不理解,我只是不想在父母的關係網蔭庇下去度過自己的生活,想自己在乙個陌生的城市親手去開創一番,建立自己的網路,我知道自己將為此付出的代價,已經失去了最愛的人,我想有個堅強的外表,可還是痛...