我正在使用一个有内置方案解释器的软件。用户可以通过在解释器中键入命令来通信/操作软件。用户还可以将一些二进制文件加载到环境中。我写了一些这样的方案代码:
(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
答案 0 :(得分:1)
如果您严格谈论应用程序的内置解释器(根据您的问题似乎就是这种情况),那么没有标准答案。您需要查看应用程序设计人员是否在其实现中构建了编译并为您公开了该功能。如果不是你就不幸了。
如果您要询问独立的Scheme应用程序或库,许多实现(例如Chicken)提供了一种或另一种的Scheme编译器(前面提到的Chicken Scheme首先编译为C)。 / p>
如果您询问Common Lisp(忽略您在标题和问题中特别提到Scheme的事实)。您可以使用标准函数compile-file,它会生成您在问题末尾提到的.fasl格式。