
220
|
第 7 章
也就是說,
RUN
是個可以模擬任何圖靈機的 lambda 演算程式
3
。結果證明相反的情況也可
以運作:將 lambda 演算運算式儲存到磁帶,並且根據一組化簡規則重複更新它(如同
第 208 頁『語意』的操作語意),圖靈機可以作為 lambda 演算的直譯器。
由於每個圖靈機都可以藉由 lambda 演算程式進行模擬,而且每個 lambda
演算程式都可以由圖靈機進行模擬,所以兩個系統的能力完全相同。這是
一個令人驚訝的結果,因為圖靈機器和 lambda 演算程式是以完全不同的
方式運作,沒有任何理由期待它們擁有完全相同的功能。
這意謂著它本身至少有一種模擬 lambda 演算的方式:首先在 lambda 演算裡實作圖靈
機,然後使用那個模擬機器執行 lambda 演算直譯器。這個模擬物內部的模擬物是一種
效率非常低落的方式,而我們可以更簡潔的藉由設計資料結構來表示 lambda 演算運算
式,然後直接實作操作語意,來得到相同的結果,但它的確證明了 lambda 演算必須通
用且不需建置任何新事物。自我直譯器是通用圖靈機的 lambda 演算版本:即使底層的
直譯器程式是固定的,我們還是可以提供適合的 lambda 演算運算式當作輸入來完成任
何工作。
正如我們所見,通用系統真正的好處在於可以將它程式化而執行不同的工作,而非總是
以寫死的程式碼執行單一工作。尤其可以程式化的將通用系統模擬任何其他的通用系
統;通用圖靈機可以估算 lambda 演算運算式,而 lambda 演算直譯器則可以模擬圖靈 ...