在鸡中,看起来我可以(use srfi-9)
,但在 Guile 中看起来像你说(use-modules (srfi srfi-9))
,在球拍中它是(require srfi/9)
. 是否有一个标准化的use-module
表单应该适用于所有方案实现(以便我可以编写可移植代码)?
,在 R6RS 和 R7RS 中,使用:
(import (srfi …))
import
是这方面的"标准形式"。 麻烦的是…
可能取决于实现。 所以问题下移了一个层次。 我见过:
(import (srfi :0))
(import (srfi srfi-0)
在不同的实现中。
对于 R6RS 和 R7RS,有一种加载库的方法,所以它确实应该是可能的。我知道你可以做(import (srfi :9))
,它适用于Ikarus和Racket。我不确定命名约定应该是什么是否存在标准,因此在其他实现中可能会有所不同。您可能需要为某些实现制作包装器。
在 R5RS 中,您必须翻录引用实现并使用 load
。这根本不会使用实现优化的代码。我见过一些项目,它们使特定于实现的启动文件利用它们支持的内容,并为那些无法获得最佳性能的人添加代码。