是否有标准的加载SRFI的方法?

时间:2014-02-16 13:41:47

标签: scheme racket guile chicken-scheme

在Chicken中看起来我可以(use srfi-9),但在Guile看起来你说(use-modules (srfi srfi-9)),在Racket中它是(require srfi/9)。是否有一个标准化的use-module表单应该适用于所有方案实现(以便我可以编写可移植代码)?

2 个答案:

答案 0 :(得分:3)

是的,在R6RS和R7RS中,使用:

(import (srfi …))

import是此标准的“标准形式”。问题是可能取决于实施。所以问题就下降了一个层次。我见过:

(import (srfi :0))
(import (srfi srfi-0)

在不同的实现中。

答案 1 :(得分:1)

对于R6RS和R7RS,有一种加载库的方法,所以它应该是可行的。我知道你可以做(import (srfi :9)),它可以在Ikarus和Racket中使用。我不确定命名约定应该是什么标准,因此在其他实现中可能会有所不同。您可能需要为某些实现创建包装器。

在R5RS中,您必须翻录参考实现并使用load。这根本不会使用实现优化代码。我已经看到了一些项目,这些项目使得特定于实现的启动文件能够利用它们所支持的内容,并为那些不能获得最佳性能的人添加代码。