方案中模块的导出列表

时间:2017-06-02 10:18:12

标签: module scheme

有没有办法在Scheme中定义一个模块,并指定要导出所有绑定,而不显式列出每一个绑定?

有没有办法在指定不要导出的绑定列表时执行上述操作?

1 个答案:

答案 0 :(得分:1)

R6RS之前的方案报告没有在规范中定义库,所以没有。以便携方式无法实现。但是,大多数R5RS的实现实际上都有自己的模块系统。例如。 Racket有强大的语法可以随心所欲地做到:

#lang racket
(provide (all-from-out <module>))
(provide (except-out (all-from-out <module>) lambda))

从R6RS我们有库,但是他们的出口规格需要按名称进行每次出口。

R6RS

#!r6rs
(library <library name>
  (export <export spec> ...)
  (import <import spec> ...)
  <library body>)

R7RS:

#!r7rs
(define-library <library name>
  <library spec>)

R7RS有意改变了语法,但具有相同的能力。请参阅R7RS小报告(pdf,第28页)