在Chicken中看起来我可以(use srfi-9)
,但在Guile看起来你说(use-modules (srfi srfi-9))
,在Racket中它是(require srfi/9)
。是否有一个标准化的use-module
表单应该适用于所有方案实现(以便我可以编写可移植代码)?
答案 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
。这根本不会使用实现优化代码。我已经看到了一些项目,这些项目使得特定于实现的启动文件能够利用它们所支持的内容,并为那些不能获得最佳性能的人添加代码。