我想知道为什么嵌套函数调用不起作用。
我正在从他的论文http://www.cs.indiana.edu/~dyb/pubs/3imp.pdf第3章实施Dybvig的基于堆的模型。
我是用JavaScript做的。来源在这里:http://github.com/z5h/zb-lisp
几乎所有东西都在parser.js中。
要跑步,
.eval("12 ")
不是.eval("12")
很多东西都有用。但是我遇到嵌套函数调用的问题:
这有效并返回5
:
(set! i (lambda (x) x)) (set! ii (i i)) (ii 5)
这不起作用:
(set! i (lambda (x) x)) (i (i 5))
这也不是:
(set! i (lambda (x) x)) ((i i) 5)
问题可能出在第577行,其中编译了嵌套调用,或者可能在框架或应用的代码中。 PDF的3.4.2部分是描述样本实现的地方。
这是一个非常复杂的问题。代码有很多粗糙的边缘 任何意见都表示赞赏。
我很乐意回答我的实施问题。
答案 0 :(得分:0)
事实证明我早早就清理了肋骨。
改进的代码可以在我的github上找到。