Haskell
Z Wikipedii
Haskell to funkcyjny język programowania nazwany na cześć Haskella Curry. Jego specyficzne cechy to leniwe wartościowanie, monady, statyczny polimorfizm.
Pliki Haskella mają rozszerzenie .hs
Choć semantyka leniwej ewaluacji może być w wielu zastosowaniach bardzo niewygodna, podobnie jak brak biblioteki porównywalnej z ocamlowską, Haskella pod względem czytelności składni nie przewyższa chyba żaden język programowania, jaki do tej pory stworzono. W szczególności widać na tym polu kontrast wobec języków takich jak Lisp i Ocaml.
Kilka przykładów:
-- Komentarz silnia(1) = 1 silnia(n) = n*silnia(n-1) silnia2 n = product [1..n] fib(0) = 0 fib(1) = 1 fib(n+2) = fib(n+1) + fib(n) ack(0,y) = y+1 ack(x,0) = ack(x-1,1) ack(x,y) = ack(x-1,ack(x,y-1)) sign x | x>0.0 = 1 sign x | x==0.0 = 0 sign x | x<0.0 = -1 myproduct [] = 1 myproduct [n] = n myproduct (n:m) = n * myproduct (m) mysum ([]) = 0 mysum (n:[]) = n mysum (n:m) = n + mysum (m) data TreeOfMath = Mult TreeOfMath TreeOfMath | Div TreeOfMath TreeOfMath | Add TreeOfMath TreeOfMath | Sub TreeOfMath TreeOfMath | Leaf Float compute (Mult x y) = compute (x) * compute (y) compute (Div x y) = compute (x) / compute (y) compute (Add x y) = compute (x) + compute (y) compute (Sub x y) = compute (x) - compute (y) compute (Leaf x) = x showme (Mult x y) = "(" ++ (showme x) ++ "*" ++ (showme y) ++ ")" showme (Div x y) = "(" ++ (showme x) ++ "/" ++ (showme y) ++ ")" showme (Add x y) = "(" ++ (showme x) ++ "+" ++ (showme y) ++ ")" showme (Sub x y) = "(" ++ (showme x) ++ "-" ++ (showme y) ++ ")" showme (Leaf x) = show x qsort [] = [] qsort (x:xs) = qsort less ++ x:(qsort more) where less = [ a | a <- xs, a < x ] more = [ a | a <- xs, a >= x ] -- wyrażenia TreeOfMath mają postać: (Sub (Mult (Leaf 5) (Leaf 4)) (Add (Leaf 3) (Leaf 2)))
[edytuj] Linki zewnętrzne
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • D • Forth • Fortran • Icon • Java • JavaScript • Lisp • Modula 2 • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET
Akademickie
Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne
ALGOL • APL • BASIC • Clipper • MUMPS • PLAN • PL/I • PL/M • SAS • Simula