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 import anbinden, PureScript-Code ist umgekehrt aus JS aufrufbar.
  • UI-Entwicklung mit Halogen oder React-Bindungen.

Verwandte Grundlagen: Elm-Befehle, TypeScript-Befehle, CoffeeScript-Befehle und ReasonML-Befehle — alle vier sind Alternativen, die zu JavaScript kompilieren.