如何在MIT Scheme中导入其他库?

3

这是一个有关于在MIT Scheme中如何加载依赖项的新手问题。

例如,我希望使用在这里定义的streams库。 http://srfi.schemers.org/srfi-41/srfi-41.html

(library (streams primitive)
  (export stream-null stream-cons stream? stream-null? stream-pair?
          stream-car stream-cdr stream-lambda)

 .....
 .....)

我该怎么做?因为这是一个SRFI,它已经存在了吗?我要将其保存为文件吗?如何调用这些函数?


大多数这些函数都在mit-scheme中,除了stream-lambda、stream?和stream-cons,stream-cons被称为cons-stream。 - Warwick Masson
1
@WarwickMasson 尽管这是真实的,MIT Scheme 的内置流在工作模式上与 SRFI 41 的流完全不同。有合理的理由希望优先选择 SRFI 41 的流。(声明:尽管 Guile 中已存在内置的流库,但我将 SRFI 41 流移植到了 Guile)。 - C. K. Young
有趣的是,根据我收到的关于我对SRFI 41进行Guile移植的反馈,人们最满意的单项改进就是我将 stream->list 从右折叠变为左折叠,这样在转换长流时就不会导致堆栈溢出问题。 - C. K. Young
2个回答

2

SRFI 41的参考实现有两个变体,一个用于R5RS和一个用于R6RS。MIT Scheme抵制R6RS,因此您应该使用R5RS版本。

我没有使用过MIT Scheme,所以除此之外我无法再说更多了。从他们的主页上看,MIT Scheme似乎也没有模块系统,因此您可能需要将该文件保存到项目目录中,并以传统方式load它。


0

只是想说,当我需要使用vector-fold时,使用(import (srfi 133))对我很有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接