PureScript ist eine rein funktionale Programmiersprache, die nach JavaScript kompiliert. Sie wurde ab 2013 von Phil Freeman entwickelt und überträgt Ideen aus Haskell-Befehle (Typklassen, Algebraische Datentypen, Pattern Matching) in die Web-Welt — mit strikter Auswertung und einem expliziten Effektsystem.
Compiler und Build-Tool
purs --version # Compiler-Version anzeigen
purs compile src/*.purs # kompiliert nach output/ (CommonJS-Module)
purs repl # interaktive REPL
purs docs 'Main' # HTML-Dokumentation für ein Modul erzeugen
Der Compiler heißt purs. Als Build-Tool und Paketmanager hat sich Spago etabliert; ältere Projekte nutzten pulp zusammen mit psc-package.
Spago-Befehle
spago init # neues Projekt mit src/ und test/ anlegen
spago install # Abhängigkeiten aus dem Package Set installieren
spago build # Projekt bauen (auch --watch möglich)
spago test # Tests ausführen
spago run # Hauptmodul Main ausführen
spago repl # REPL mit Projekt-Kontext starten
spago bundle # gebündeltes JavaScript für den Browser erzeugen
spago ls packages # verfügbare Pakete anzeigen
Syntax-Highlights
- Starke statische Typisierung mit vollständiger Typinferenz; Typen wie
Int,String,Array,Maybe,Either. - Effekte werden über die
Effect-Monade und Row Polymorphism typisiert — Seiteneffekte sind im Typsystem sichtbar. - Foreign Function Interface (FFI): JavaScript-Funktionen lassen sich mit
foreign importanbinden, PureScript-Code ist umgekehrt aus JS aufrufbar. - UI-Entwicklung mit
Halogenoder React-Bindungen.
Verwandte Grundlagen: Elm-Befehle, TypeScript-Befehle, CoffeeScript-Befehle und ReasonML-Befehle — alle vier sind Alternativen, die zu JavaScript kompilieren.