Clean

programovací jazyk

Clean je v informatice univerzální čistě funkcionální programovací jazyk, který je silně ovlivněn jazykem Haskell.

Clean
Vznik1987
Vývojářsoftwarová technologická výzkumná skupina Radboud University Nijmegen
Poslední verze2.2
Hlavní implementaceClean
Ovlivněn jazykyHaskell
OSmultiplatformní

Vlastnosti editovat

Jazyk Clean je silně ovlivněn jazykem Haskell. Má s ním proto společné vlastnosti: referenční transparentnost, generátorovou notaci seznamů (list comprehension), stráže (guards), garbage collector, funkce vyšších řádů, currying a líné vyhodnocování (lazy evaluation). Součástí distribuce Cleanu je i vývojové prostředí.

Clean má pro změny stavů a I/O operace alternativu k monádám jazyka Haskell ve formě (anglicky uniqueness type), že objekty jsou používány jedno-threadově (anglicky single-threaded).

Příklady editovat

Hello world:

 module hello
 Start = "Hello, world!"

Faktoriál:

module factorial
fac 0 = 1
fac n = n * fac (n-1)
 
// find the factorial of 10
Start = fac 10

Fibonacciho posloupnost:

module fibonacci
fib 0 = 0 
fib 1 = 1 
fib n = fib (n - 2) + fib (n - 1)
Start = fib 7

Infixová notace:

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

Tento typ deklarace udává, že se jedná o asociativní infixovou notaci s prioritou 8: důsledkem toho je, že x*x^(n-1) je rovnocenný s x*(x^(n-1)) a v protikladu k (x*x)^(n-1); tato notace je ve standardním prostředí Cleanu předdeklarovaná.

Jak Clean pracuje editovat

Postup je založen na přepisování grafů (graph rewriting) a redukci. Konstanty, jako například číselné grafy a funkční grafy přepisují vzorce. To v kombinaci s kompilací do nativního kódu dělá programy psané v Clean poměrně rychlé, a to i s vysokou abstrakcí.

Kompilace editovat

  1. Zdrojové soubory (.icl) a projektové soubory (.dcl) jsou převedeny do Clean platformy nezávislého byte kódu (.abc), implementovaného v jazyce C a Clean.
  2. Byte kód (bytecode) je převedený do strojového kódu (.obj) pomocí C.
  3. V Cleanu je strojový kód spojen s dalšími soubory v modulu a za běhu převeden do běžně spustitelné formy.

Starší verze Cleanu byly psané zcela v C, čímž se předcházelo problémům při bootstrappingu.

Platformy editovat

Clean je k dispozici pro Microsoft Windows. S omezenými vstupně/výstupními schopnostmi a bez funkce „Dynamics“ je také dostupný pro Apple, Solaris a Linux.

Licence editovat

Clean je distribuován ve dvou licencích: k dispozici je za podmínek GNU LGPL a také pod vlastnickou licencí.

Odkazy editovat

Související články editovat

Externí odkazy editovat