2017-06-02 2 views
0

Existe-t-il un moyen de définir un module dans Scheme, et spécifier que toutes les liaisons doivent être exportées, sans les énumérer explicitement?liste d'exportation pour les modules dans le schéma

Existe-t-il un moyen d'effectuer ce qui précède en spécifiant une liste de liaisons qui ne doivent pas être exportées?

+0

J'utilise Chez Scheme, donc la solution doit être compatible avec Chez. Merci! –

Répondre

1

Les rapports de schéma avant R6RS n'ont pas de bibliothèques définies dans la spécification, donc pas. Ce n'est pas possible de manière portable. Cependant, la plupart des implémentations de R5RS ont leur propre système de modules. par exemple. Racket possède une puissante syntaxe pour faire exatly que vous voulez:

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

De R6RS nous avons des bibliothèques, mais leur spécification d'exportation a besoin de chaque exportation par son nom.

R6RS:

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

R7RS:

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

Le R7RS changé la syntaxe avec un but, mais a la même capacité. Voir le rapport R7RS-small (pdf, page 28)