在 JavaScript 中,我可以检索函数的“源代码”定义,例如:
function alert_Hi() {
alert("Hi");
}
alert(alert_Hi);
将完全返回我输入的内容。http://jsfiddle.net/DuCqJ/
我怎样才能在 MIT 计划中做到这一点?
我记得看到一些返回#compound-procedure
的东西,但我真正想要的是“源代码”。
在 JavaScript 中,我可以检索函数的“源代码”定义,例如:
function alert_Hi() {
alert("Hi");
}
alert(alert_Hi);
将完全返回我输入的内容。http://jsfiddle.net/DuCqJ/
我怎样才能在 MIT 计划中做到这一点?
我记得看到一些返回#compound-procedure
的东西,但我真正想要的是“源代码”。
你可以试试pp
(define (display-hi) (display "Hi"))
(pp display-hi) =>
(named-lambda (display-hi)
(display "Hi"))
JavaScript 是完全解释的,所以即使在你定义了它们之后,它也有完整的函数定义。Scheme实际上并没有被完全解释;它将函数(以及我认为的其他一些结构)编译为不可读的表示形式并丢弃初始代码。
您可能会使用一些宏技巧在运行时存储函数的初始文本表示,但我倾向于相信这会比它的价值更麻烦。
如果您不介意我问,为什么在运行时需要定义函数的文本表示?