Pureskript

Pureskript
PureScript Logo.png
Paradigma Funktional
Entworfen von Phil Freeman
Erstmals erschienen 2013
Stabile Version
0.15.4 / 30. Juni 2022; Vor 38 Tagen
Disziplin tippen Gefolgert, statisch, stark
Lizenz BSD[1]
Dateiname -Erweiterungen .purs
Webseite www.purescript.org Edit this at Wikidata
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

Verweise

  1. ^ "purescript/purescript". GitHub. 3. Juni 2022.
  2. ^ "Purescript". www.purescript.org. Abgerufen 2019-03-14.
  3. ^ "Lesen Sie Purescript mit Beispiel | Leanpub". Leanpub.com. Abgerufen 2019-03-14.
  4. ^ Ein Build -Tool für Purescript -Projekte, Purescript Beitrag, 2019-03-08, abgerufen 2019-03-14
  5. ^ "Verfolgen". Pursuit.purescript.org. Abgerufen 2019-03-14.
  6. ^ Purescript-Paket-Manager und Build-Tool, das von Dhall und Paketmengen betrieben wird: Spacchetti/Spago, Spacchetti, 2019-03-14, abgerufen 2019-03-14
  7. ^ Dokumentation für die Purescript -Sprache, Compiler und Tools: Purescript/Dokumentation, Purescript, 2019-03-14, abgerufen 2019-03-14
  8. ^ Dokumentation für die Purescript -Sprache, Compiler und Tools: Purescript/Dokumentation, Purescript, 2019-03-14, abgerufen 2019-03-14
  9. ^ STARE IDE: Herausgeber- und Tooling -Unterstützung für die Purescript -Programmiersprache, 2019-04-21, abgerufen 2019-04-21
  10. ^ Implementierung der vom Typ gerichteten Suche nach Purescript, 2016-10-27
  11. ^ 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

Externe Links