Haskell
- l`rby@
- Az@rbaycanca
- Belaruskaia
- B'lgarski
- baaNlaa
- Catala
- Cestina
- Dansk
- Deutsch
- Ellenika
- English
- Esperanto
- Espanol
- Eesti
- Euskara
- frsy
- Suomi
- Francais
- Galego
- `bryt
- hindii
- Hrvatski
- Magyar
- Hayeren
- Bahasa Indonesia
- Ido
- Islenska
- Italiano
- Ri Ben Yu
- K'azak'sha
- hangugeo
- Latina
- Letzebuergesch
- Latviesu
- mlyaallN
- mraatthii
- Bahasa Melayu
- Nederlands
- Norsk bokmal
- pNjaabii
- Portugues
- Romana
- Russkii
- Simple English
- Slovencina
- Slovenscina
- Shqip
- Srpski / srpski
- Svenska
- aithy
- Toki pona
- Turkce
- Ukrayins'ka
- Tieng Viet
- Zhong Wen
Logo jezyka | |
| Pojawienie sie |
1990[1] |
|---|---|
| Paradygmat | |
| Typowanie | |
| Implementacje | |
| Aktualna wersja stabilna |
Haskell 9.12.1[2] |
| Tworca |
Lennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, John Hughes, Thomas Johnsson, Mark Jones, Simon Peyton Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler |
| Platforma sprzetowa | |
| Strona internetowa | |
Haskell - czysto funkcyjny jezyk programowania nazwany na czesc amerykanskiego matematyka, Haskella Curry'ego.
Cechy
[edytuj | edytuj kod]Jego specyficzne cechy to m.in.:
- leniwe wartosciowanie (ang. lazy evaluation),
- wsparcie syntaktyczne monad,
- statyczny polimorfizm,
- klasy typow (ang. typeclasses),
- definiowalne operatory (rowniez mozliwosc tworzenia nowych),
- straznicy,
- wbudowana obsluga literate programming.
Rozszerzenia
[edytuj | edytuj kod]Pliki Haskella maja rozszerzenie
hslhsgdy zawieraja kod w stylu literate programming.
Kompilator
[edytuj | edytuj kod]Haskell byl poczatkowo intensywnie rozwijany wokol osrodka University of Glasgow, popularny kompilator tego jezyka to Glasgow Haskell Compiler (GHC) kompilujacy szybki kod maszynowy porownywalny w szybkosci wykonania do kodow z GCC (ok. 1,3 razy wolniejszy niz C)[potrzebny przypis].
Przyklady
[edytuj | edytuj kod]{- Komentarze na
wiele linijek
{- mozna zagniezdzac -}
-}
-- Przyklady funkcji z dopasowywaniem wzorca
silnia 0 = 1
silnia n = n*silnia(n-1)
silnia n = product [1..n]
fib 0 = 0
fib 1 = 1
fib n = fib(n-1) + fib(n-2)
ack(0,y) = y+1
ack(x,0) = ack(x-1,1)
ack(x,y) = ack(x-1,ack(x,y-1))
-- przyklad uzycia straznikow
sign x | x > 0 = 1
| x == 0 = 0
| x < 0 = -1
myproduct [] = 1
myproduct (n:m) = n * myproduct m
mysum [] = 0
mysum (n:m) = n + mysum m
-- wyrazenia TreeOfMath maja postac: (Sub (Mult (Leaf 5) (Leaf 4)) (Add (Leaf 3) (Leaf 2)))
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))
Przypisy
[edytuj | edytuj kod]- | Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler: A History of Haskell: Being Lazy with Class. 2007. ISBN 978-1-59593-766-7.
- | Download -- The Glasgow Haskell Compiler [online], www.haskell.org [dostep 2025-01-24] .
Linki zewnetrzne
[edytuj | edytuj kod]| Zobacz publikacje Haskell w Wikibooks |
| 1GL | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2GL/ Jezyk drugiej generacji/ Asembler | |||||||||||||||
| 3GL / Jezyk trzeciej generacji |
| ||||||||||||||
| 4GL/ Jezyk czwartej generacji/ Jezyk dziedzinowy |
| ||||||||||||||
| 5GL/Logiczne | |||||||||||||||
| Ezoteryczne | |||||||||||||||
| Inne |