Es gibt keine ordnungsgemäße Scheme-Erweiterung. Ich habe R [567] RS durchsucht und es ist nicht spezifiziert.
Dies ist absichtlich wie die Appendix F in a R6RS Non-Normative Appendices draft (PDF) hatte tatsächlich einen Teil über die Zuordnung von Bibliothekspfad zu Dateipfade, die nicht die endgültige Spezifikation gemacht.
Wenn das gesagt wird, ist die häufigste Dateierweiterung für Scheme-Programme .scm
und es wurden andere Erweiterungen in R6RS und vielleicht R7RS von Implementierern hinzugefügt, um Bibliothek von Hauptprogrammen zu unterscheiden.
Tatsächlich müssen die Implementierungen nur sicherstellen, dass es eine Möglichkeit gibt, eine Bibliothek zu "installieren". Dies ist normalerweise eine Datei, die dem Bibliotheksnamen im Quellcode zugeordnet werden muss. In Racket der R6RS wird dies durch ein Installationsprogramm vorgenommen:
plt-r6rs --install test.xxx
[installing /home/westerp/.racket/6.4/collects/examples/hello.ss]
[Compiling /home/westerp/.racket/6.4/collects/examples/hello.ss]
So in der Tat für Schläger es Namen/Erweiterung jeder Datei ohne Frage akzeptiert, aber es nutzt .ss
als Erweiterung für R6RS und es sieht für .sls
und .scm
Dateien Nun, sollten Sie manuell tun, was die plt-r6rs --install
von Hand tut.
Andere Implementierungen erfordern möglicherweise manuelle Wege zum Installieren einer Bibliothek, aber es hat immer noch nichts mit der Scheme-Sprache zu tun, da die Spezifikation diesen Teil durch die Implementierungen gelöst hat.
Die Dateierweiterungen sind irgendwie überall, nach meiner Erfahrung Konventionen, die sich signifikant zwischen Schema-Implementierungen unterscheiden. Um dem Stapel hinzuzufügen, haben R7RS-Bibliotheksdefinitionen begonnen, die '.sld'-Erweiterung neben' .scm'-Programmen der höchsten Ebene zu verwenden. –