我想知道为什么嵌套函数调用不起作用。
我在他的论文中实现了dybvig的基于堆的模型
http://www.cs.indiana.edu/~dyb/pubs/3imp.pdf
第3章。
我用的是javascript。来源如下:
http://github.com/z5h/zb-lisp
几乎所有内容都在parser.js中。
奔跑,
-
用firebug在firefox中加载test.html。
-
evaluator.newevaluator().eval(“这里是方案代码”);
-
在代码末尾留一些空白,因为解析器现在有点中断,并且依赖于结尾的空白。(待修复)。例如
.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行,其中编译了嵌套调用,或者可能出现在frame或apply的代码中。pdf的第3.4.2节描述了示例实现。
这是一个相当复杂的问题。代码有许多粗糙的边。
欢迎任何意见。
我很高兴回答任何问题,我的执行。