8

在流程和CPS轉換的背景下,我有一個小麻煩決定哪些行政redexes(lambda表達式)到底是:CPS轉換後的行政redexes究竟是什麼?

  • 所有拉姆達了由CPS轉換介紹表情
  • only通過CPS轉換引入的lambda表達式,但如果您通過「手動」或通過更智能的CPS轉換器進行轉換,則不會寫入

如果可能的話,一個很好的參考將是受歡迎的。

回答

4

Redex代表「reducible expression」,它是一個不是值的表達式。因此,lambda不是redex,而是一個call。
在CPS中,管理redex是redex,其運算符是延續lambda。這種redexes可以立即減少,因爲你知道你正在調用哪個函數。
例如,((lambda (u) ...) foo)是行政redex,但(k foo)不是。

4

我想我找到了我的答案。 (編輯:我已經接受dimvar的答案相反,它是更短,更正確)

假設輸入程序沒有完全CPS,至少一個過程返回點將必須由CPS轉換成延續轉換。所以這個延續是通過轉換來引入的。因爲這是必要的,所以你總是需要這樣做,例如在手工轉換時。因此,行政redexes只是由CPS轉換引入的並不真正必需的lambda(我的第二個定義)。

我發現了一個paper,解釋像這樣(重點煤礦):

編碼λ-

天真到CPS, 然而,生成相當可觀的 在lambda表達式的通貨膨脹,這 的形成行政指標,可以安全減少 。行政 減少產量CPS條款 對應於人們可以手寫 。因此,它已成爲一個挑戰,儘可能多地消除管理委派, CPS轉換時間。

不過,任何言論或建議當然歡迎。

+0

鏈接至紙張斷開。 – 2011-01-12 19:40:53

+0

@Darius:論文是「CPS變換的Beta Redexes」(我正在閱讀它)。這是一個鏈接:http://www.brics.dk/RS/04/39/BRICS-RS-04-39.pdf – 2011-05-17 20:57:24