Pureskript
Paradigma | Funktional |
---|---|
Entworfen von | Phil Freeman |
Erstmals erschienen | 2013 |
Stabile Version | 0.15.4 / 30. Juni 2022 |
Disziplin tippen | Gefolgert, statisch, stark |
Lizenz | BSD[1] |
Dateiname -Erweiterungen | .purs |
Webseite | www |
Beeinflusst von | |
Haskell, JavaScript |
Pureskript ist ein stark typisch, rein funktionsfähig Programmiersprache das kompiliert JavaScript. Es kann verwendet werden, um Webanwendungen, Server -Seiten -Apps und Desktop -Anwendungen unter Verwendung von zu entwickeln Elektron. Seine Syntax ist größtenteils vergleichbar mit der von Haskell. Außerdem wird es vorgestellt Reihenpolymorphismus und Erweiterbare Aufzeichnungen.[2] Auch im Gegensatz zu Haskell hält Purescript an a Strenge Bewertungsstrategie.
Geschichte
Purescript wurde zunächst 2013 von Phil Freeman entworfen. Er begann an Purescript zu arbeiten, da er nicht mit anderen Versuchen zufrieden war, Haskell zu JavaScript zu kompilieren (z. B. mit Fay, Eile oder GHCJs).[3]
Seitdem wurde es von der Community aufgegriffen und wird entwickelt GitHub. Zusätzliche Kernwerkzeuge, die von der Community entwickelt wurden, umfassen das dedizierte Build -Tool "Pulp".[4] Das Dokumentationsverzeichnis "Verfolgung",[5] und der Paketmanager "Spago"[6]
Merkmale
Purescript -Funktionen strenge Bewertung, anhaltende Datenstrukturen und Geben Sie Inferenz ein. Das System des Purescript -Typs teilt viele Funktionen mit denen ähnlicher funktionaler Sprachen wie wie Haskell: Algebraische Datentypen und Musteranpassung, höheren Typen, Geben Sie Klassen ein und funktionale Abhängigkeiten, und höherer Polymorphismus. Das Typ -System von Purescript fügt Unterstützung für die Unterstützung Reihenpolymorphismus und erweiterbare Aufzeichnungen.[7] Purescript fehlt jedoch nicht die Unterstützung für einige der fortgeschritteneren Funktionen von Haskell Like GADTS und Typ Familien.
Der Purescript -Compiler versucht nach Möglichkeit, lesbare JavaScript -Code zu erstellen. Durch ein einfaches FFI -SchnittstelleEs ermöglicht auch die Wiederverwendung des vorhandenen JavaScript -Code.[8]
Purescript unterstützt Inkrementelle Zusammenstellungund die Compiler -Verteilung beinhaltet Unterstützung für das Gebäude Quellcode -Editor Plugins für die iterative Entwicklung.[9] Editor -Plugins existieren für viele beliebte Textredakteure, einschließlich Vim, EMACs, Erhabener Text, Atom und Visual Studio -Code.
Purescript unterstützt die typengesteuerte Entwicklung über seine Typed Loch-Funktion.[10] in dem ein Programm mit fehlenden Unterexpressionen konstruiert werden kann. Der Compiler wird anschließend versuchen, die Arten der fehlenden Subtimpressionen zu schließen und diese Typen dem Benutzer zu melden. Diese Funktion hat ähnliche Arbeiten in der GHC Haskell Compiler.[11]
Beispiele
Hier ist minimal "Hallo Welt" -Programm in Purescript:
Modul Hauptsächlich wo importieren Effekt.Console (Protokoll) hauptsächlich = Protokoll "Hallo Welt!"
Hier wird die Art des Programms vom Purescript -Compiler abgeleitet und überprüft. Eine ausführlichere Version desselben Programms kann explizite Typanmerkungen enthalten:
Modul Hauptsächlich wo importieren Auftakt importieren Wirkung (Wirkung) importieren Effekt.Console (Protokoll) hauptsächlich :: Wirkung Einheit hauptsächlich = Protokoll "Hallo Welt!"
Siehe auch
- ELM (Programmiersprache)- funktionale Programmiersprache
- Grund (Programmiersprache)
- JS ++- Webprogrammiersprache
- Typoskript- Programmiersprache und Superset von JavaScript
Verweise
- ^ "purescript/purescript". GitHub. 3. Juni 2022.
- ^ "Purescript". www.purescript.org. Abgerufen 2019-03-14.
- ^ "Lesen Sie Purescript mit Beispiel | Leanpub". Leanpub.com. Abgerufen 2019-03-14.
- ^ Ein Build -Tool für Purescript -Projekte, Purescript Beitrag, 2019-03-08, abgerufen 2019-03-14
- ^ "Verfolgen". Pursuit.purescript.org. Abgerufen 2019-03-14.
- ^ Purescript-Paket-Manager und Build-Tool, das von Dhall und Paketmengen betrieben wird: Spacchetti/Spago, Spacchetti, 2019-03-14, abgerufen 2019-03-14
- ^ Dokumentation für die Purescript -Sprache, Compiler und Tools: Purescript/Dokumentation, Purescript, 2019-03-14, abgerufen 2019-03-14
- ^ Dokumentation für die Purescript -Sprache, Compiler und Tools: Purescript/Dokumentation, Purescript, 2019-03-14, abgerufen 2019-03-14
- ^ STARE IDE: Herausgeber- und Tooling -Unterstützung für die Purescript -Programmiersprache, 2019-04-21, abgerufen 2019-04-21
- ^ Implementierung der vom Typ gerichteten Suche nach Purescript, 2016-10-27
- ^ Matthías Páll Gissurarson (2018-09-27), "Vorschläge gültiges Lochanpassungen für Typed-Löcher (Erfahrungsbericht)", ACM Sigplan nennt, 53 (7): 179–185, doi:10.1145/3299711.3242760, S2CID 218480974