0

我正在使用具有内置方案解释器的软件。用户可以通过在解释器中输入命令来交流/操作软件。用户还可以将一些二进制文件加载到环境中。我写了一些这样的方案代码:

(define test (lambda() (display "This is a test!"))) ---- d:/test.scm

然后将其编译成二进制文件,该文件将更快地加载和执行。但该文档没有关于编译方案代码的信息。编译后,用户可以通过键入以下内容加载二进制文件:

(fast-load "d:/test.bin" (the-environment))

我认为“快速加载”只是做阅读和评估的事情。那么编译只是一个加密过程吗?有人知道这些事情吗?任何信息将不胜感激!提前致谢。

还有另一个例子:AutoCAD 系统。用户可以编写 lisp 代码来操作 AutoCAD。用户可以将 lisp 代码编译成 *.fas 文件,该文件将被加载到 AutoCAD 中。那么如果真的只是一个加密过程,那我怎么写编译器呢?有没有关于它的文件?

                                                                       Joe
4

1 回答 1

1

如果您严格谈论应用程序的内置解释器(根据您的问题似乎就是这种情况),则没有标准答案。您需要查看应用程序设计人员是否在他们的实现中构建了编译并为您公开了该功能。如果不是,那你就不走运了。

如果您要询问独立的 Scheme 应用程序或库,许多实现(例如Chicken)提供了一种或另一种 Scheme 编译器(前面提到的 Chicken Scheme 首先编译为 C)。

如果您在询问 Common Lisp(忽略您在标题和问题中特别提到 Scheme 的事实)。您可以使用标准函数compile-file,它会生成您在问题末尾提到的 .fasl 格式。

于 2010-12-30T18:02:30.770 回答