2013-04-10 38 views
7

在功能範式中,功能是主要的「控制結構」。例如,+運算符也被視爲一個函數,並且可以像其他任何「對象」一樣傳遞它們。我想知道,如果我不得不實施一玩具功能性的語言,將我實現簡單的功能作爲真正的功能(即,翻譯成+一個可調用的例程)或把它們翻譯成將置於「內聯」成經翻譯的代碼正常指令。但是,接下來的第二個策略是,我能夠將它們傳遞給Haskell並部分應用它們嗎?對於在函數式語言中實現/翻譯函數作爲核心思想,您有什麼想法?你將如何實現一個函數式編程語言?

+0

這樣的事情,我會想象:http://mitpress.mit.edu/sicp/ – 2013-04-10 05:56:38

+0

第二種策略被稱爲defunctionalization:http://en.wikipedia.org/wiki/Defunctionalization – 2013-04-10 06:02:30

+0

如果你想要從頭開始實現一個玩具功能性的語言,我會建議您按照建議在這裏:* http://research.microsoft.com/en-us/um/people/simonpj/Papers/pj-lester-book/如果你想重用Haskell的運行時我會推薦這裏開始的:* http://www.grabmueller.de/martin/www/pub/Transformers.en.html – 2013-04-10 05:58:25

回答

0

我可以推薦PJL書。我在它的幫助下編寫了一個編譯器(1989-90,在Prolog中),這本書是對這個主題的一個很好的介紹。

它可能是過時的(寫於1987年,30年前),但它仍然涵蓋了很好的基礎知識。但是,它完全專注於像Haskell這樣的懶惰語言。當時Haskell不存在,書中使用LML或米蘭達(Miranda),這是一種前身語言,但語言非常接近。

相關問題