Clean (programming language)

from Wikipedia, the free encyclopedia
Clean
Paradigms : functional , non-strict , modular , declarative
Publishing year: 1987
Current  version : 2.4   (December 23, 2011)
Influenced by: Haskell
Operating system : Windows , Linux , Mac OS X , Solaris etc.
License : LGPL , commercial
http://www.cs.ru.nl/~clean/

Clean is a functional programming language.

Clean is characterized by referential transparency , which means that the result of a function call only depends on the input parameters. With the same input parameters, you always get the same result.

Clean has similar properties to the Haskell programming language . The most striking difference is the use of uniqueness typing for input and output instead of a monad .

Examples

 module hallo

 Start = "Hallo Welt!"

Faculty (Mathematics) :

 module fakultaet

 fak 0 = 1
 fak n = n * fak (n-1)

 // Berechne den Wert von 10 Fakultät
 Start = fak 10

Fibonacci sequence :

 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

Infix notation :

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

The given type declaration defines the function (^)as a right-associative infix operator with priority 8. This means that it is x*x^(n-1)equivalent to x*(x^(n-1)), and not to (x*x)^(n-1). The (^)operator is predefined in the clean standard environment.

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]

Web links