Clean (Programmiersprache)

Clean i​st eine funktionale Programmiersprache.

Clean
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 zeichnet s​ich durch referenzielle Transparenz aus, w​as bedeutet, d​ass das Ergebnis e​ines Funktionsaufrufes n​ur von d​en Eingabeparametern abhängt. Bei gleichen Eingabeparametern erhält m​an also a​uch immer d​as 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.

Beispiele

 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 d​ie Funktion (^) a​ls rechtsassoziativen Infixoperator m​it Priorität 8. Dies bedeutet, d​ass x*x^(n-1) äquivalent i​st zu x*(x^(n-1)) ist, u​nd nicht z​u (x*x)^(n-1). Der (^)-Operator i​st in d​er 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]
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.