温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - include vs. load in mit-scheme
include load mit-scheme r6rs scheme

其他 - 在MIT方案中包含与负载

发布于 2020-04-23 10:07:52

(include path)(load path)in有mit-scheme什么区别

我grep mit-scheme的源代码,我看到了的一些用法,includeload在参考文档中找到的定义,但是我找不到语义。

我还发现了include-ci-我从未使用过它。与其他有什么不同?

就我个人而言,我使用了(include FILE)很多次,但是认为它#include与预处理器的语言具有相同的语义,因此可以正常工作。

对我来说,不清楚这些解释的水平。include在阅读器/语法删除/运行时级别执行的吗?

有人可以澄清一下这些含义吗?

查看更多

提问者
alinsoar
被浏览
32
alinsoar 2020-02-07 16:33

我将单独回答这个问题,因为与此同时我找到了答案。

此功能已在mit-scheme中引入:

commit 70bf1e80dc3a70e2017bacd490516add36c5a8d6
Author: Chris Hanson <org/chris-hanson/cph>
Date:   Sat May 19 22:30:49 2018 -0700

    Implement include and include-ci for R7RS.

事情按此顺序进行:读取器读取文件,它返回包含文件内容的s表达式(包括诸如(include ....)之类的子表达式)。读取器返回的s表达式将插入宏扩展器中,并在此级别扩展(include ...)指令(在这种情况下,通过syntax扩展过程将其称为具有文件名的读取器) 。宏扩展器将返回一个scode数据结构(一种以减数形式表示s表达式的组合器的语言)。(include FILE)在代码组合器阶段不再存在。而是存在(load ...),并且将在代码输入评估器之后执行。

这回答了我的问题。注释中提供的链接仅部分回答了我感兴趣的内容。