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 Backendclean– 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.