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ą, Haskell nadrabia to wyjątkowo czytelną składnią. W szczególności widać na tym polu kontrast wobec języków takich jak 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 ]
-- lista liczb pierwszych
primes = map head $ iterate (\(x:xs)->[y| y<-xs, y `mod` x /= 0]) [2..]
-- lista liczb Fibonacciego
listFib = 1:1:(zipWith (+) listFib (tail listFib))
-- 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 • Common Lisp • D • F# • Forth • Fortran • GAUSS • Icon • Java • JavaScript • Lisp • Lustre• Modula 2 • Ocaml • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • SAS 4GL • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET • XUL
Akademickie: Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne: ALGOL • APL • BASIC • Clipper • JAS • MUMPS • PLAN • PL/I • PL/M • SAKO • SAS (asembler) • Simula
Inne: Erlang • occam • QCL
Ezoteryczne: INTERCAL • Brainfuck • BeFunge • Unlambda • Malbolge • Whitespace • FALSE • HQ9+ • Shakespeare • Whirl • Ook
| Polska przedstawi założenia polityki wschodniej |
|
Minister Spraw Zagranicznych Radosław Sikorski zapowiedział w TVN 24, że w najbliższych tygodniach należy się spodziewać "skonsultowanej z sojusznikami i partnerami" uszczegółowionej propozycji Polski w sprawie polityki wschodniej UE.
|
| "Wprost": Rutkowski mógł pomagać porywaczom Olewnika |
|
– Detektyw Krzysztof Rutkowski mógÅ‚ współpracować z porywaczami mojego syna – podejrzewa WÅ‚odzimierz Olewnik, ojciec porwanego i zamordowanego Krzysztofa. Oskarżenia pod adresem Rutkowskiego – także o wyÅ‚udzenie od nich znacznej sumy pieniÄ™dzy – rodzina Olewników ujawniÅ‚a już w kwietniu. "Wprost" dotarÅ‚ do informacji wskazujÄ…cych, że także w wypadku innych gÅ‚oÅ›nych porwaÅ„ Krzysztof Rutkowski mógÅ‚ pomagać gangsterom.
|
| PSL chce więcej stanowisk |
|
Piechociński za Grabarczyka i więcej foteli wiceministrów - to, jak dowiedział się "Newsweek", pomysł PSL na letnią rekonstrukcję gabinetu Donalda Tuska.
|
| Kazimierz Sas przewodniczącym małopolskiego SLD |
|
Nowym szefem SLD w Małopolsce został Kazimierz Sas, członek Zarządu Krajowego i szef nowosądeckiej SLD.
|
| Kielce: Sławomir Kopyciński ponownie liderem SLD |
|
Poseł Sławomir Kopyciński został ponownie wybrany na przewodniczącego świętokrzyskiej rady wojewódzkiej Sojuszu Lewicy Demokratycznej. Wyboru dokonali w sobotę delegaci na zjeździe w Kielcach.
|