为'lambda'生成LLVM代码,'define'

Joh*_*ler 20 lisp compiler-construction haskell language-design llvm

所以我现在有一个用haskell编写的相当完整的LISP(方案)解释器.只是为了好玩,我想尝试将它编译成LLVM.大多数代码生成看起来都非常简单,但我对如何为lambda表达式生成代码感到茫然(在lisp中有点重要;))以及如何在遇到define表达式时管理堆.

我怎么能为这些表达式生成代码?

注意:我可以为lambda表达式的主体生成代码.令我困惑的是如何在某处"放置"该代码并使其可调用.

Don*_*art 10

请参阅Lennart的博客文章:http://augustss.blogspot.com/2009/06/more-llvm-recently-someone-asked-me-on.html

看看这个compileFunction功能.特别是newFunction在LLVM核心中:http://hackage.haskell.org/packages/archive/llvm/0.9.1.2/doc/html/LLVM-Core.html#g:23