COSCUP 2022

Your locale preferences have been saved. We like to think that we have excellent support for English in pretalx, but if you encounter issues or errors, please contact us!

closure converision -- powered by nanopass
07-31, 12:50–13:20 (Asia/Taipei), TR212
Language: 漢語

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


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


Target Audience

對語言實作有興趣的人

Difficulty

中階

youtube_link

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

racket 賜我娛樂、elixir 賜我吃穿