Question

Comment puis-je créer une bibliothèque appelée rnrs-modified qui affichera le code suivant "Bonjour tout le monde !"... ?

#!r6rs
(import (rnrs-modified))
(display set!)

ou même ce serait bien (sans doute mieux, en fait) :

#!r6rs
(import (rnrs) (modified)) ;or (import (modified) (rnrs))
(display set!)

Essentiellement, je veux pouvoir redéfinir des mots-clés syntaxiques (let, lambda, set !, etc.) dans une bibliothèque, puis importer cette bibliothèque dans une autre bibliothèque ou un programme de niveau supérieur et utiliser ces mots-clés redéfinis.

Cependant, j'obtiens toujours ceci :

module: identifier already imported from a different source in:
  set!
  (lib "rnrs/main.ss")
  (lib "rnrs-modified/main.ss")

Le code que j'utilise pour rnrs-modified est :

#!r6rs
(library (rnrs-modified)
         (export (rename (f set!)))
         (import (rnrs))
         (define f "Hello, world!"))

Des idées?


Mise à jour:j'ai trouvé ce pour les « modules mzscheme ».Ce n'est pas pour le schéma r6rs, mais la fonctionnalité qu'il offre est fondamentalement exactement ce que je recherche.Comment puis-je faire provide all-from-except dans le schéma r6rs ?

Était-ce utile?

La solution

R6RS se prête davantage à la réalisation de votre objectif en identifiant la bibliothèque que vous souhaitez personnaliser, en excluant les parties que vous souhaitez personnaliser, puis en définissant ces parties dans votre propre bibliothèque.Voici un exemple:

myrnrs.sls

(library
 (myrnrs)

 (export set!)

 (import
  (except (rnrs) set!)
  (rename (rnrs) (set! rnrs-set!)))

 (define set! "Hello, world."))

test.scm

(import
 (except (rnrs) set!)
 (myrnrs))
 (display set!)(newline)    

Malheureusement, il n'y a rien de comparable à tout ce que nous avons dans Racket ;vous pourriez donc créer une bibliothèque qui redéfinit set !, mais vous devrez importer rnrs puis saisir les exportations pour toutes ces liaisons en plus de redéfinir set !.Vous en lisez davantage sur ici;ironiquement, je voulais aussi créer une bibliothèque sans set !.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top