開源人年會 2022

您已儲存您的地區設定。若有任何問題請跟我們聯繫!

closure converision -- powered by nanopass
年7月31日, 12:50–13:20 (Asia/Taipei), TR212
語言: 漢語

閉包轉換是函數式編程語言編譯過程中的一項重要技術,本節將了解我們為什麼需要這個轉換、如何實現,順便了解一下 nanopass


閉包轉換是一種從任何表達式中刪除所有自由變量的轉換。通過把自由變量包裝進一個結構之中,再將 lambda 與它包裝進結構之中,就是一個閉包。 調用閉包時,調用者必須解開閉包以獲取 lambda 再獲取已包裝的自由變數,然後將 lambda 套用上原本就有的參數及已包裝的自由變數。對上述兩種描述,自動轉換程式的演算法就叫做閉包轉換。閉包轉換後任何 lambda 都不再有自由變量,因此可以繼續套用 C 或是 assembly 等語言的編譯轉換。


目標聽眾族群

對語言實作有興趣的人

內容難易度

中階

youtube_link

https://www.youtube.com/watch?v=6T-LBM4480U

racket 賜我娛樂、elixir 賜我吃穿