Schläger (Programmiersprache)
Paradigma | Multi-Paradigma: funktional, Imperativ, Logik, Meta, modular, objektorientierter, reflektierend |
---|---|
Familie | Lispeln |
Entworfen von | PLT Inc. |
Entwickler | PLT Inc. |
Erstmals erschienen | 1995 |
Stabile Version | 8.5[1] / 1. Mai 2022 |
Disziplin tippen | Dynamisch, statisch, stark |
Plattform | x86, Powerpc, Sparc, MIPS, ARM |
OS | Plattformübergreifend |
Lizenz | MIT oder Apache 2.0[2] |
Dateiname -Erweiterungen | .rkt[3] |
Webseite | Schläger-Lang |
Dialekte | |
Tippte Schläger, Frime, fauler Schläger, Kritzelei | |
Beeinflusst von | |
Eiffel,[4] Planen | |
Beeinflusst | |
Clojure,[5] Rost,[6][7] Planen[8] |
Schläger ist ein allgemeiner Zweck, Multi-Paradigm-Programmiersprache und eine Mehrfach-Plattform-Verteilung, die die Schlägersprache enthält. Compiler, große Standardbibliothek, Ide, Entwicklungswerkzeuge und eine Reihe zusätzlicher Sprachen, einschließlich typisierter Schläger (eine Schwestersprache des Schlägers mit statischer Typ-Prüfung), Schwindel, Front, Lazy Racket, R5RS & R6RS Planen, Scribble, Datalog, Racklog, Algol 60 und mehrere Lehrsprachen.
Die Schlägersprache ist ein moderner Dialekt von Lispeln und ein Nachkomme von Planen. Es ist als Plattform für Programmiersprache Design und Implementierung.[9] Zusätzlich zur Sprache des Kernschlägers, Schläger wird auch verwendet, um sich auf die Familie der Programmiersprachen zu beziehen[10] und eine Reihe von Tools, die die Entwicklung auf und mit Schläger unterstützen.[11] Schläger wird auch für verwendet Scripting, Informatik Bildung und Forschung.
Die Schlägerplattform bietet eine Implementierung der Schlägersprache (einschließlich a Laufzeitsystem,[12] Bibliotheken und Compiler Unterstützung mehrerer Kompilierungsmodi: Maschinencode, maschinenunabhängig, interpretiert und JIT) zusammen mit dem Drracket integrierte Entwicklungsumgebung (Ide) im Schläger geschrieben.[13] Schläger wird von der verwendet ProgrammByDesign Outreach -Programm, das sich umdrehen möchte Informatik in "einen unverzichtbaren Teil der Liberale Künste Lehrplan".[14][15]
Die Sprache der Kernschläger ist bekannt für ihre umfangreichen Makro System, das eingebettetes Erstellen ermöglicht und Domänenspezifische Sprachen, Sprachkonstrukte wie z. Klassen oder Module, und separate Dialekte des Schlägers mit unterschiedlich Semantik.[16][17][18][19]
Die Plattformverteilung ist Kostenlose und Open-Source-Software verteilt unter dem Apache 2.0 und MIT -Lizenzen.[20] Erweiterungen und Pakete von der Community können auf Schläger hochgeladen werden Paketkatalog.
Geschichte
Entwicklung
Matthias Fellisen Gründete PLT Inc. Mitte der neunziger Jahre, zunächst als Forschungsgruppe, kurz darauf als Projekt, das sich der Produktion widmet Pädagogik Materialien für Anfängerprogrammierer (Vorlesungen, Übungen/Projekte, Software). Im Januar 1995 beschloss die Gruppe, eine pädagogische Programmierumgebung basierend auf Planen. Matthew Flatt zusammengeschustert Mred, das Original virtuelle Maschine für Schläger, von libScheme,[21] wxWidgetsund ein paar andere freie Systeme.[22] In den folgenden Jahren ein Team mit Flatt, Robby Findler, Shriram Krishnamurthi, Cormac Flanagan und viele andere produzierten Drscheme, ein Programmierumfeld für Anfängerprogrammierer und ein Forschungsumfeld für weiche Typisierung.[13] Die wichtigste Entwicklungssprache, die DrScheme unterstützte, wurde als PLT -Schema bezeichnet.
Parallel dazu begann das Team mit der Durchführung von Workshops für Highschool -Lehrer und schulte sie in Programmdesign und funktionaler Programmierung. Feldtests mit diesen Lehrern und ihren Schülern lieferten wesentliche Hinweise für die Regie der Entwicklung.
In den folgenden Jahren fügte PLT Lehrsprachen hinzu, ein algebraischer Stepper.[23] ein transparenter Read -E -druck -Schleife, ein Konstruktor-basierter Drucker und viele andere Innovationen für DRSCHEME, die eine pädagogische Programmentwicklung in Anwendungsqualität erzeugt. Bis 2001 hatte das Kernteam (Felleisen, Findler, Flatt, Krishnamurthi) auch ihr erstes Lehrbuch geschrieben und veröffentlicht. So entwerfen Sie Programmebasierend auf ihrer Lehrphilosophie.
Das Schlägermanifest[9] Detailliert die Prinzipien, die die Entwicklung des Schlägers vorantreiben, präsentiert den Bewertungsrahmen für den Entwurfsprozess und erläutert die Möglichkeiten für zukünftige Verbesserungen.
Versionsgeschichte
Die erste Generation von PLT -Schema -Revisionen führte Features für ein Programmierung im großen mit beiden Module und Klassen. Version 42 eingeführte Einheiten-ein erstklassiges Modulsystem-zum Ergänzung von Klassen für die Entwicklung von großem Maßstab.[24] Das Klassensystem gewann Merkmale (z. Java-Stil Schnittstellen) und auch mehrere Merkmale verloren (z. Mehrfacherbe) in diesen Versionen.[16] Die Sprache entwickelte sich in einer Reihe von aufeinanderfolgenden Versionen und erlangte in Version 53 die Popularität der Meilenstein, was zu umfangreichen Arbeiten und der folgenden Version 100 führt, was einer "1.0" -Version in aktuellen populären Versionssystemen entspricht.
Die nächste große Überarbeitung wurde als Version 200 ausgezeichnet, wodurch ein neues Standardmodulsystem eingeführt wurde, das mit Makros zusammenarbeitet.[24] Insbesondere sorgt das Modulsystem für die Laufzeit und Kompilierungszeit Die Berechnung wird getrennt, um einen "Turm der Sprachen" zu unterstützen.[25] Im Gegensatz zu Einheiten sind diese Module nicht erstklassige Objekte.
Version 300 eingeführt Unicode Unterstützung, Ausländische Bibliothek Unterstützung und Verfeinerungen des Klassensystems.[24] Später verbesserte die 300er -Serie die Leistung der Sprachlaufzeit mit einem Addition eines JIT -Compilers und einem Wechsel zu einem Standard Generation Müllsammlung.
Nach der nächsten großen Veröffentlichung hatte das Projekt zu einem konventionelleren Wechsel gewechselt Sequenzbasiert Versionsnummerierung. Version 4.0 führte die vor #lang
Kurzschrift, um die Sprache zu spezifizieren, in der ein Modul geschrieben ist. Weiter, die Revision eingeführt unveränderlich Paare und Listen, Unterstützung für feinkörnig Parallelität, und ein statisch typiert Dialekt.[26]
Am 7. Juni 2010 wurde das PLT -Schema umbenannt.[27] Das Umbenennen fiel mit der Veröffentlichung von Version 5.0 zusammen. Anschließend die grafische Benutzeroberfläche (GUI) Backend wurde im Schläger von umgeschrieben C ++ in Version 5.1 mit nativ UI -Toolkits auf allen Plattformen.[22] Version 5.2 enthielt einen Hintergrund Syntaxprüfung Tool, eine neue Ploting -Bibliothek, eine Datenbankbibliothek und eine neue erweiterte Repl.[28] Version 5.3 enthielt eine neue Submodule -Funktion für optional geladene Module.[29] Neu Optimierung Werkzeuge, a JSON Bibliothek und andere Funktionen.[30] Version 5.3.1 Einführte wichtige Verbesserungen an Drracket: Der Hintergrundsyntax -Checker wurde standardmäßig eingeschaltet und ein neues Dokumentations -Vorschau -Tool hinzugefügt.[31]
In Version 6.0 veröffentlichte Racket sein Paketverwaltungssystem der zweiten Generation. Im Rahmen dieser Entwicklung wurde das Haupt -Drracket- und Schläger -Repository in Drracket und Schläger neu organisiert und in einen großen Satz kleiner Pakete aufgeteilt, wodurch es möglich ist, eine zu installieren minimaler Schläger und nur die benötigten Pakete zu installieren.[32]
Version 7 von Racket wurde mit einem neuen Makro -Expander veröffentlicht, der in Racket geschrieben wurde Chez Schema Laufzeitsystem und Unterstützung mehrerer Laufzeitsysteme.[33] [34] Am 19. November 2019 wurde Racket 7.5 veröffentlicht. Die Lizenz von Schläger 7.5 war weniger restriktiv. Sie verwenden jetzt entweder die Apache 2.0 -Lizenz oder die MIT -Lizenz.[35][36]
Am 13. Februar wurde Racket 8.0 veröffentlicht. Racket 8.0 markiert die erste Version, bei der Racket mit dem Chez Schema Das Laufzeitsystem, bekannt als Schläger CS, ist die Standardimplementierung. Schläger CS ist schneller, leichter zu warten und zu entwickeln, rückwärtskompatibel mit vorhandenen Schlägerprogrammen und hat eine bessere parallele Müllsammlung.[37]
Merkmale
Die Kernsprache des Schlägers umfasst Makros, Module, lexikalische Schließungen, Schwanzaufrufe, Grabendauer Fortsetzungen,[38] Parameter (Flüssigkeitsvariablen), Softwareverträge,[39] grüne Fäden und OS -Threads,[40][41][42] und mehr. Die Sprache kommt auch mit Primitiven wie Ereignisspitzen und Depotbanken, die das Ressourcenmanagement kontrollieren und es der Sprache ermöglichen, sich wie eine zu verhalten Betriebssystem zum Laden und Verwalten anderer Programme.[12] Weitere Erweiterungen der Sprache werden mit dem leistungsstarken Makrosystem erstellt, das zusammen mit dem Modulsystem und benutzerdefinierten Parser alle Aspekte einer Sprache steuern können.[43] Die meisten Sprachkonstrukte im Schläger werden in der Basissprache als Makros implementiert. Dazu gehören a mischen Klassensystem,[16] Ein Komponentensystem (oder ein Modul), das so ausdrucksstark ist wie eine undurchsichtige Zuschreibung in der ML Modulsystem,[17] und Musteranpassung.
Darüber hinaus bietet die Sprache das erste Vertragssystem für a higher-order programming Sprache.[44] Das Vertragssystem des Schlägers ist von der inspiriert Entwurf durch Vertrag arbeiten für Eiffel und erweitert es für Werte höherer Ordnung wie z. erstklassige Funktionen, Objekte, Hinweis Zellen und so weiter. Beispielsweise kann ein Objekt, das von einem Vertrag überprüft wird, sichergestellt werden, dass sie Vertragsprüfungen durchführen, wenn seine Methoden letztendlich aufgerufen werden.
Schläger beinhaltet beides Bytecode und Jit (JIT) Compiler. Der Bytecode -Compiler erzeugt ein internes Bytecode -Format, das vom Schläger ausgeführt wird virtuelle Maschineund der JIT -Compiler übersetzt Bytecode in den Maschinencode zur Laufzeit.
Seit 2004 hat die Sprache auch mit Planet, einem Paketmanager, der in das Modulsystem integriert ist Bibliotheken von Drittanbietern kann transparent importiert und verwendet werden. Außerdem hat Planet ein integriert Versioning Richtlinie zu verhindern Abhängigkeit Hölle.[45]
Ende 2014 wurde ein Großteil des Codes von Schläger in ein neues Verpackungssystem verschoben, das von der Hauptcode -Basis getrennt ist. Dieses neue Verpackungssystem wird von einem Kundenprogramm namens bedient Raco. Das neue Paketsystem bietet weniger Funktionen als Planet. Ein Blog -Beitrag von Jay McCarthy im Schlägerblog erklärt die Gründe für die Veränderung und wie man das ältere System dupliziert.[46]
Integrierte Sprachweiterbarkeit und Makros
Die Merkmale, die den Schläger am deutlichsten von anderen Sprachen in der Lisp -Familie unterscheiden, sind die integrierte Sprache Erweiterbarkeit Features, die den Aufbau neuer Bauen unterstützen Domänenspezifisch und allgemeiner Zweck Sprachen. Die Erweiterbarkeitsfunktionen des Schlägers sind in das Modulsystem integriert, um kontextsensitive Steuerung und Modulsteuerung über die Syntax zu ermöglichen.[18] Zum Beispiel die #%App
Die syntaktische Form kann überschrieben werden, um die Semantik von zu ändern Funktionsanwendung. Ebenso das #%Modul-Bein
Form ermöglicht eine willkürliche statische Analyse des gesamten Moduls.[18] Da jedes Modul als Sprache über die verwendet werden kann #lang
Notation bedeutet effektiv, dass praktisch jeder Aspekt der Sprache programmiert und kontrolliert werden kann.
Die Erweiterbarkeitsfunktionen auf Modulebene werden mit a kombiniert Planen-ähnlich hygienisches Makrosystem, das mehr Funktionen bietet als Lisps S-Expression Manipulation System,[47][48] Schema 84er hygienisch Syntax-Makros verlängern oder R5rs's Syntax-Rules. In der Tat ist es fair zu sagen, dass das Makrosystem sorgfältig abgestimmt ist Programmierschnittstelle (API) für Compiler Erweiterungen. Mit dieser Compiler -API können Programmierer Funktionen und Ganze hinzufügen Domänenspezifische Sprachen auf eine Weise, die sie völlig nicht von eingebauten Sprachkonstrukten zu unterscheiden.
Das Makro Das System im Schläger wurde verwendet, um die ganze Sprache zu konstruieren Dialekte. Dies beinhaltet ein typisiertes Schläger, bei dem es sich um einen allmählich getippten Schlägerdialekt handelt, der die Migration aus erleichtert ungetarn zum typisierten Code,[49] Fauler Schläger - ein Dialekt mit faule Bewertung,[50] und Hackett, das Haskell und Schläger kombiniert.[51] Die pädagogische Programmiersprache Pyret wurde ursprünglich im Schläger implementiert.[52][53]
Andere Dialekte umfassen Frimes (FristFunktionelle reaktive Programmierung), Scribble (Dokumentationssprache),[54] Diashow (Präsentation Sprache),[55] und mehrere Sprachen für die Bildung.[56][57]
Die Kernverteilung des Schlägers bietet Bibliotheken, um die Entwicklung von Programmiersprachen zu unterstützen.[18] Solche Sprachen sind nicht beschränkt auf S-Expression basierte Syntax. Zusätzlich zu herkömmlichen lachtbaren Syntax-Erweiterungen der Richtlinie #lang
Ermöglicht die Aufruf von willkürlichen Parsers, die mithilfe der Parser Tools -Bibliothek implementiert werden können.[58] Sehen Schlägerlogikprogrammierung für ein Beispiel für eine solche Sprache.
Programmierumgebung
Die Sprachplattform bietet a selbst veranstaltet Ide[13] Named Drracket, eine fortlaufende basierte Webserver,[59] a grafische Benutzeroberfläche,[22] und andere Werkzeuge. Als praktikables Skriptwerkzeug mit Bibliotheken wie Common SkriptsprachenEs kann zum Scripting der Unix -Shell verwendet werden. Es kann analysieren Kommandozeilenargumente und externe Tools ausführen.
Drracket ide
Drracket (ehemals DrScheme) wird häufig bei einführenden Informatikkursen eingesetzt, die Schema oder Schläger unterrichten, und wird für seine Einfachheit und Attraktivität an Anfängerprogrammierer gelobt. Die IDE wurde ursprünglich für die Verwendung mit dem TeachScheme gebaut! Projekt (jetzt ProgrammByDesign), eine Outreach -Anstrengung von Nordöstliche Universität und eine Reihe angeschlossener Universitäten, um Highschool -Schüler für Informatikkurse auf College -Ebene zu gewinnen.
Der Herausgeber bietet Hervorhebung Für Syntax- und Laufzeitfehler, Klammern Matching, a Debugger und ein algebraischer Stepper. Zu den studentfreundlichen Funktionen gehören die Unterstützung mehrerer "Sprachebenen" (beginnender Student, Zwischenstudent usw.). Es hat auch Bibliotheksunterstützung und raffinierte Bibliotheksunterstützung Analyse Tools für fortschrittliche Programmierer. Des Weiteren, Modulorientierte Programmierung wird mit dem Modulbrowser, einer Konturansicht, unterstützt, integriert testen und Berichterstattung Messungen und Refactoring Unterstützung. Es bietet einen integrierten, kontextsensitiven Zugriff auf ein umfangreiches hypergebundenes Help-System mit dem Namen "Helpdesk".
Drracket ist für verfügbar Fenster, Mac OS, Unix, und Linux mit dem X Fenstersystem und Programme verhalten sich ähnlich auf all diesen Plattformen.
Codebeispiele
Hier ist ein trivial Hallo Welt Programm:
#lang Schläger "Hallo Welt!"
Ausführen dieses Programms erzeugt die Ausgabe:
- "Hallo Welt!"
Hier ist ein etwas weniger triviales Programm:
#lang Schläger (benötigen 2HTDP/Bild) (Lassen Sierpinski [n 8])) (wenn (Null? n) (Dreieck 2 'fest 'rot) (Lassen [t (Sierpinski (- n 1))]) (einfrieren (Oben t (neben t t))))))
Dieses Programm, das von der Schlägerwebsite entnommen wird, zeichnet a Sierpinski -Dreieck, verschachtelt bis Tiefe 8.
Verwendung der #lang
Richtlinie, eine Quelldatei kann in verschiedenen Schlägerdialekten geschrieben werden. Hier ist ein Beispiel für das faktorielle Programm im typisierten Schläger, a statisch typisiert Dialekt des Schlägers:
#lang Typed/Schläger (: Tatsache (Ganze Zahl -> Ganze Zahl)) (definieren (Tatsache n) (wenn (Null? n) 1 (* n (Tatsache (- n 1)))))
Anwendungen und praktische Verwendung
Abgesehen von einer Grundlage in Programmiersprache Theorie, Racket wurde als allgemeine Sprache für Produktionssysteme konzipiert. Somit verfügt die Schlägerverteilung über eine umfangreiche Bibliothek, die Systeme und Netzwerkprogramme, Webentwicklung, abdeckt,[59] Eine einheitliche Schnittstelle zum zugrunde liegenden Betriebssystem, eine Dynamik Fremdenfunktionsschnittstelle,[60] mehrere Geschmacksrichtungen von Reguläre Ausdrücke, Lexer/Parser -Generatoren,[58] Logikprogrammierungund eine vollständige GUI Rahmen.
Der Schläger verfügt über mehrere Funktionen, die für eine kommerzielle Sprache nützlich sind, darunter die Fähigkeit, eigenständige ausführbare Ausführungsfähigkeiten unter Windows, MacOS und Unix zu kompilieren, a Profiler und Debugger inbegriffen in integrierte Entwicklungsumgebung (Ide) und a Unit -Tests Rahmen.
Der Schläger wurde für kommerzielle Projekte und Webanwendungen verwendet. Ein bemerkenswertes Beispiel ist das Hacker News Website, die weitergeht Bogen, die im Schläger entwickelt wird. Frecher Hund Hat es in mehreren ihrer Videospiele als Skriptsprache verwendet.[61]
Der Schläger wird verwendet, um den Schülern Algebra durch Spieldesign in der Bootstrap -Programm.[62]
Verweise
- ^ "Schläger v8.5". 1. Mai 2022. Abgerufen 1. Mai 2022.
- ^ Tobin-Hochstadt, Sam; Gerard, Weise; Dueck, Joel; Flatt, Matthew; Software Freedom Conservancy; Chinek, Pamela (2019-11-15). "Abschluss des Rakets Relicensing -Anstrengungen". Abgerufen 2019-12-27.
- ^ "Drracket -Dateien". Abgerufen 21. Juli 2019.
Die Standarddateierweiterung für eine Racket -Programmdatei lautet ".rkt". Die Erweiterungen ".SS", ".Scm" und ".Sch" sind auch historisch beliebt.
- ^ Strickland, T.S.; Fleckens, Matthias (2010). "DLS 2010: Verträge für erstklassige Klassen" (PDF).
- ^ Bonnaire-Sergeant, Ambrose (2012). Ein praktisches optionales Typsystem für Clojure (These). Die University of Western Australia.
- ^ "Planet2 Fragen".
- ^ "Rost Bibliographie".
- ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. (August 2007). "Überarbeitet6 Bericht über das algorithmische Sprachschema (R6RS) ". Schema -Lenkungsausschuss. Abgerufen 2011-09-13.
- ^ a b Fellisen, M.; Findler, R.B.; Flatt, M.; Krishnamurthi, S.; Barzilay, E.; McCarthy, J.; Tobin-Hochstadt, S. (2015). "Das Schläger Manifest" " (PDF). Verfahren des ersten Gipfels zu Fortschritten in Programmiersprachen: 113–128.
- ^ "Dialekte von Schläger und Schema". Abgerufen 2011-08-15.
- ^ "Willkommen im Schläger". Abgerufen 2019-05-15.
- ^ a b Flach; Findler; Krishnamurthi; Felleisen (1999). Programmiersprachen als Betriebssysteme (oder Rache des Sohnes der Lisp -Maschine). Internationale Konferenz über funktionale Programme.
- ^ a b c Findler; Clements; Flanagan; Flach; Krishnamurthi; Steckler; Felleisen (2001). "DrScheme: Eine Programmierumgebung für Schema" (PDF). Journal of Functional Programming.
- ^ Felleisen; Findler; Flach; Krishnamurthi (2004). "The TeachCheme! Project: Computer und Programmierung für jeden Schüler". Zeitschrift für Informatikunterricht.
- ^ "Überblick". Programm von Design. Abgerufen 2011-08-17.
- ^ a b c Flatt, M.; Findler, R. B.; Fellisen, M. (2006). "Schema mit Klassen, Mixins und Eigenschaften" (PDF). Asiatisches Symposium für Programmiersprachen und Systeme.
- ^ a b Flatt, M.; Fellisen, M. (1998). "Einheiten: Coole Module für heiße Sprachen". Programmiersprache Design und Implementierung.
- ^ a b c d Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Fellisen, M. (2011). "Sprachen als Bibliotheken" (PDF). Programmiersprache Design und Implementierung.
- ^ Fellisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (2018). "Eine programmierbare Programmiersprache". Kommunikation der ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010.
- ^ "Schläger: Softwarelizenz". Abgerufen 2015-10-20.
- ^ Benson, Brent W. Jr. (26. bis 28. Oktober 1994). "libScheme: Schema als C -Bibliothek". Geschrieben in Santa Fe, NM. Verfahren des Usenix -Symposiums auf sehr hohen Sprachen. Berkeley, CA: Usenix Association. S. 7–19. ISBN 978-1880446652. Abgerufen 7. Juli 2013.
- ^ a b c "Wiederaufbau der Grafikschicht des Schlägers". 2010-12-08. Abgerufen 2017-12-11.
- ^ Clements, J.; Flatt, M.; Fellisen, M. (2001). "Modellierung eines algebraischen Steppers" (PDF). Europäisches Symposium für Programmiersprachen.
- ^ a b c "Raket Core Release -Notizen". Archiviert von das Original Am 2013-07-05. Abgerufen 2012-04-15.
- ^ Flatt, M. (2002). "Komponierbare und kompilierbare Makros". Internationale Konferenz über funktionale Programme.
- ^ "PLT Scheme Version 4.0". 2008-06-12. Archiviert von das Original Am 2013-02-02. Abgerufen 2012-08-07.
- ^ "Vom PLT -Schema zum Schläger". Racket-Lang.org. Abgerufen 2011-08-17.
- ^ "Schläger 5.2". PLT, Inc. 2011-11-09. Abgerufen 2012-06-16.
- ^ "Submodules". 2012-06-03. Abgerufen 2012-08-07.
- ^ "Schläger 5.3". PLT, Inc. 2012-08-07. Abgerufen 2012-08-07.
- ^ "Schläger 5.3.1". PLT, Inc. 2012-11-07. Abgerufen 2012-11-07.
- ^ "Schläger 6.0". PLT, Inc. 2014-02-26. Abgerufen 2016-02-23.
- ^ "Racket-on-Chez Status: Januar 2018". 2018-01-05. Archiviert vom Original am 2018-06-28. Abgerufen 2018-04-13.
- ^ "Bauen von Schlägern am Chez Schema (Erfahrung Bericht)" (PDF). 2019-08-01. Abgerufen 2019-07-25.
- ^ "Schläger 7.5 Release". Packt Hub. Abgerufen 2019-11-28.
- ^ "Schläger v7.5". Schläger | Blog. Abgerufen 2019-11-28.
- ^ "Schläger v8.0".
- ^ Flatt, M.; Yu, G.; Findler, R. B.; Fellisen, M. (2007). "Hinzufügen einer abgrenzten und komponierbaren Kontrolle zu einer Produktionsprogrammierungsumgebung" (PDF). Internationale Konferenz über funktionale Programme.
- ^ "Verträge".
- ^ "Threads".
- ^ "Futures".
- ^ "Setzt".
- ^ Flatt, Matthew (2012). "Sprachen im Schläger erstellen". Kommunikation der ACM. Abgerufen 2012-04-08.
- ^ Findler, R. B.; Fellisen, M. (2002). "Verträge für Funktionen höherer Ordnung" (PDF). Internationale Konferenz über funktionale Programme.
- ^ Matthews, J. (2006). "Komponentenbereitstellung mit Planet: Sie möchten es wo?". Schema- und funktionaler Programmierworkshop.
- ^ "Das Schlägerpaketsystem und Planet".
- ^ Flatt, Matthew (2002). "Mit komponierbare und kompilierbare Makros möchten Sie es wann?" (PDF). Internationale Konferenz über funktionale Programme.
- ^ Flatt, Culpepper, Darais, Findler, Makros, die zusammenarbeiten; Kompilierungszeitbindungen, teilweise Expansion und Definitionskontexte
- ^ Tobin-Hochstadt, S.; Fellisen, M. (2008). "Das Design und die Implementierung des Typenschemas". Prinzipien der Programmiersprachen.
- ^ Barzilay, E.; Clements, J. (2005). "Faulheit ohne all die harte Arbeit: faule und strenge Sprachen zum Unterrichten kombinieren". Funktionale und deklarative Programmierung in der Bildung.
- ^ "Die Hackett -Programmiersprache". Alexis Kings Blog. Abgerufen 16. Juni 2019.
- ^ Die Pyret -Crew (24. Mai 2011). "Der Pyret -Code; oder eine Begründung für die Pyret -Programmiersprache". Pyret. Abgerufen 16. Juni 2019.
- ^ "Programmier- und Programmiersprachen". Index von /. 20. September 2017. Abgerufen 16. Juni 2019.
- ^ Flatt, M.; Barzilay, E.; Findler, R. B. (2009). "Scribble: Schließen Sie das Buch in Ad -hoc -Dokumentationstools". Internationale Konferenz über funktionale Programme.
- ^ Findler, R. B.; Flatt, M. (2004). "Diashow: Funktionale Präsentationen". Internationale Konferenz über funktionale Programme.
- ^ Fellisen, M.; Findler, R. B.; Flatt, M.; Krishnamurthi, S. (2009). "Ein funktionales E/A -System (oder Spaß für Erstsemester -Kinder)" (PDF). Internationale Konferenz über funktionale Programme.
- ^ Fellisen, M.; Findler, R. B.; Flatt, M.; Krishnamurthi, S. (2004). "Die Struktur und Interpretation des Lehrplans der Informatik" (PDF). Journal of Functional Programming. 14 (4): 365–378. doi:10.1017/s0956796804005076.
- ^ a b "Parser-Werkzeuge: Parsen im Lex und Yacc-Stil". Abgerufen 2011-08-16.
- ^ a b Krishnamurthi, Hopkins; McCarthy; Graunke; Pettyjohn; Felleisen (2007). "Implementierung und Verwendung des PLT -Schemas -Webservers" (PDF). Zeitschrift für höhere Ordnung und symbolische Programmierung. 20 (4): 431–460. doi:10.1007/s10990-007-9008-y. S2CID 17731194.
- ^ Barzilay, E.; Orlovsky, D. (2004). "Fremdgrenzfläche für PLT -Schema" (PDF). Schema und funktionale Programmierung.
- ^ "Funktionales MZScheme DSLs in der Spielentwicklung". Abgerufen 2012-05-08.
- ^ "Bootstrap". Bootstrapworld.org. Abgerufen 2015-08-11.
Weitere Lektüre
- Felleisen et al., 2013. Reich des Schlägers. Keine Stärkepresse.
- Felleisen et al., 2003. So entwerfen Sie Programme. MIT Press.
Externe Links
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Lisp 1, 1,5, Lisp 2(verlassen) | ||||||||||||||
MacLisp | ||||||||||||||
Interisp | ||||||||||||||
Mdl | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Planen | R5rs | R6rs | R7Rs klein | |||||||||||
NULL | ||||||||||||||
ZIL (Zork Implementierungssprache) | ||||||||||||||
Franz Lisp | ||||||||||||||
Common Lisp | ||||||||||||||
Le lisp | ||||||||||||||
MIT -Schema | ||||||||||||||
T | ||||||||||||||
Chez Schema | ||||||||||||||
EMACS Lisp | ||||||||||||||
Autolisp | ||||||||||||||
Picolisp | ||||||||||||||
EULISP | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
PLT -Schema | Schläger | |||||||||||||
Gnu Guile | ||||||||||||||
Visual Lisp | ||||||||||||||
Clojure | ||||||||||||||
Bogen | ||||||||||||||
Lfe | ||||||||||||||
Hy |