如何在MIT Scheme中获取我的函数定义?

7
在JavaScript中,我可以获取一个函数的“源代码”定义,例如:
function alert_Hi() {
    alert("Hi");
}

alert(alert_Hi);

将会精确地返回我所输入的内容。http://jsfiddle.net/DuCqJ/

在MIT Scheme中我该如何实现这个功能?

我记得看到过一个返回#compound-procedure或其他东西的函数,但我真正想要的是“源代码”。

2个回答

9
你可以尝试使用pp。
(define (display-hi) (display "Hi"))
(pp display-hi) =>
(named-lambda (display-hi)
  (display "Hi"))

MIT-Scheme 调试辅助工具


4

JavaScript是完全解释执行的,因此即使您定义了函数,它也会保留完整的函数定义。Scheme实际上并非完全解释执行;它将函数(以及其他一些构造)编译为不可读的表示形式并丢弃初始代码。

您可能可以使用一些宏技巧使其在运行时存储函数的初始文本表示,但我倾向于认为这会带来更多麻烦。

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


因为我很懒,我想说(display-function myFunction)而不是滚动编辑器回去 :P - Tina CG Hoehr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接