Clean

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

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

Vlastnosti

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

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

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

  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

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

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

Odkazy

Související články

Externí odkazy

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.