6

在 JavaScript 中,我可以检索函数的“源代码”定义,例如:

​function alert_Hi() {
    alert("Hi");
}

alert(alert_Hi);

将完全返回我输入的内容。http://jsfiddle.net/DuCqJ/

我怎样才能在 MIT 计划中做到这一点?

我记得看到一些返回#compound-procedure的东西,但我真正想要的是“源代码”。

4

2 回答 2

8

你可以试试pp

(define (display-hi) (display "Hi"))
(pp display-hi) =>
(named-lambda (display-hi)
  (display "Hi"))

MIT-Scheme 调试辅助工具

于 2013-01-06T17:26:06.827 回答
4

JavaScript 是完全解释的,所以即使在你定义了它们之后,它也有完整的函数定义。Scheme实际上并没有被完全解释;它将函数(以及我认为的其他一些结构)编译为不可读的表示形式并丢弃初始代码。

您可能会使用一些宏技巧在运行时存储函数的初始文本表示,但我倾向于相信这会比它的价值更麻烦。

如果您不介意我问,为什么在运行时需要定义函数的文本表示?

于 2012-08-26T15:18:57.443 回答