Clean

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

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

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

  • Haskell

Externí odkazy

  • Clean-domácí stránka
    • Clean jazykové zprávy
    • úvodní učebnice Clean
  • Čistěte čistý ve FOLDOC
  • Clean ve strojovém jazyce Benchmarks Game
  • Clean vs. Haskell
  • Clean FAQ
  • Domovská stránka Haskellu
  • Haskell.cz O Haskellu v češtině
  • Seriál Haskell a funkcionální programování
Programovací jazyky
abecední seznam programovacích jazyků
multiparadigmatické
Ada • C++Common Lisp • D • F# • Go • Oberon • PerlPHPPythonRuby • Rust • Scala • Swift • Tcl (Tk) • Vala
strukturované (procedurální)
AWK • C • COBOLDCL • Forth • FortranLuaModula-2 / Modula-3 • Pascal • PawnPL/SQL
objektové
BETA • Boo • C# • Eiffel • Java (Groovy, Kotlin) • JavaScriptObject PascalObjective-CSmalltalkVB.NET
funkcionální
Clean • Ceylon • Erlang • Haskell • J • LispWolfram Language / Mathematica • Miranda • OCamlScheme
dotazovací
LINQSPARQLSQLXQueryXSL (XSLTXSL-FOXPath)
logické
Gödel • Prolog
výukové
Baltazar • Baltík • Karel • Kodu Game Lab • Logo • Microsoft Small Basic • Petr • Scratch
ezoterické
BefungeBrainfuckHQ9+MalbolgeOok!PietWhitespace
historické
ALGOL • APL • B • BASICCPL (BCPL) • J • MUMPSPL/ISimula 67SNOBOL
další
ABAPAppleScriptColdFusionJSA • Julia • MATLAB • R • Visual Basic (VBScript) • VimscriptVisual FoxPro
skriptovací/strojový kódkompilované/interpretované • interaktivní/dávkovéWYSIWYG