2017-06-02 52 views
0

有没有办法在Scheme中定义一个模块,并指定所有绑定都要导出,而不是明确地列出每一个绑定?计划中模块的导出列表

有没有办法做到上述,而指定一个绑定列表不会被导出?

+0

我使用Chez Scheme,因此无论何种解决方案都需要与Chez兼容。谢谢! –

回答

1

R6RS之前的方案报告没有在规范中定义的库,所以没有。这不可能以便携的方式进行。然而,R5RS的大多数实现实际上都有自己的模块系统。例如。球拍具有强大的语法做exatly只要你想:

#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-small报告(pdf,第28页)