Clean ist eine funktionale Programmiersprache vergleichbar zu Haskell. Sie ist „rein" (pure), was bedeutet, dass die von ihr erzeugten Softwareobjekte keine Seiteneffekte haben. Wenn ein Objekt funktioniert, funktioniert es immer gleich. In Clean ist die Seiteneffektfreiheit auch auf den überschreibenden Update von Funktionsargumenten erweitert worden. Mit Clean können daher seiteneffektfreie Programme hergestellt werden, die Datenbanken, Dateien und Datenfelder überschreibend updaten sowie mit fremden Programmen kommunizieren.