Clean (Programmiersprache)

Van Wikipedia, de gratis encyclopedie

Clean
Basisdaten
Paradigmen: funktional, nicht-strikt, modular, deklarativ
Erscheinungsjahr: 1987
Aktuelle Version: 3.1  (20. Dezember 2021)
Beeinflusst von: Haskell
Betriebssystem: Windows, Linux, Mac OS X, Solaris etc.
Lizenz: LGPL, kommerziell
https://clean.cs.ru.nl/Clean

Clean ist eine funktionale Programmiersprache.

Clean zeichnet sich durch referenzielle Transparenz aus, was bedeutet, dass das Ergebnis eines Funktionsaufrufes nur von den Eingabeparametern abhängt. Bei gleichen Eingabeparametern erhält man also auch immer das gleiche Ergebnis.

Clean hat ähnliche Eigenschaften wie die Programmiersprache Haskell. Auffälligster Unterschied ist die Verwendung von uniqueness typing für die Ein- und Ausgabe anstelle einer Monade.

 module hallo   Start = "Hallo Welt!" 

Fakultät (Mathematik):

 module fakultaet   fak 0 = 1  fak n = n * fak (n-1)   // Berechne den Wert von 10 Fakultät  Start = fak 10 

Fibonacci-Folge:

 module fibonacci   fib 0 = 0  fib 1 = 1  fib n = fib (n - 2) + fib (n - 1)   // Berechne den Wert der siebten Fibonacci-Zahl  Start = fib 7 

Infixnotation:

 (^) infixr 8 :: Int Int -> Int  (^) x 0 = 1  (^) x n = x * x ^ (n-1) 

Die gegebene Typdeklaration definiert die Funktion (^) als rechtsassoziativen Infixoperator mit Priorität 8. Dies bedeutet, dass x*x^(n-1) äquivalent ist zu x*(x^(n-1)) ist, und nicht zu (x*x)^(n-1). Der (^)-Operator ist in der Clean-Standard-Umgebung vordefiniert.

Quicksort

  module sort    qsort :: [a] -> [a] | Ord a   qsort []     = []   qsort [a:xs] = qsort [x \\ x <- xs | x < a] ++ [a] ++ qsort [x \\ x <-xs | x >= a]    // sortiere Liste   Start = qsort [5,4,3,2,1]