Clean ist eine rein funktionale Programmiersprache, die an der Radboud-Universität Nijmegen (Niederlande) entwickelt wurde. Sie ähnelt Haskell, setzt aber statt Monaden auf Uniqueness Types: Ein als eindeutig (*) typisiertes Objekt darf nur einmal verwendet werden, wodurch Seiteneffekte wie Datei-I/O typsicher und effizient möglich sind. Dieser Ansatz beeinflusste unter anderem die Ownership-Konzepte von Rust.

Compiler und Werkzeuge

  • clm – der Clean-Compiler (Clean to Machine code)
  • cleanc – Compiler-Frontend, erzeugt C-Code für das Backend
  • clean – integrierte Entwicklungsumgebung/Compiler-Skript unter UNIX

Clean-Quellcode steht in .icl-Dateien (Implementation) und .dcl-Dateien (Definition/Interface). Die Standardbibliothek heißt StdEnv.

Beispiel

module Hello

Start = "Hello, Clean!"

Kompilieren

clm -o hello hello.icl      # kompilieren, ausführbare Datei hello erzeugen
./hello                     # starten

Clean wurde lange als Alternative zu Haskell in der funktionalen Community geschätzt, ist aber heute weniger verbreitet. Das Forschungssystem iTasks nutzt Clean für Workflow-Anwendungen. Weitere rein funktionale Sprachen: Haskell-Befehle und Curry-Befehle.