2013-04-10 71 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),这是一种前身语言,但语言非常接近。

相关问题