„`html
Haskell
Haskell to czysto funkcyjny język programowania, nazwany na cześć amerykańskiego matematyka Haskella Curry’ego.
Cechy
Język Haskell charakteryzuje się następującymi cechami:
- leniwe wartościowanie
- wsparcie dla monad
- statyczny polimorfizm
- klasy typów (typeclasses)
- możliwość definiowania operatorów
- strażnicy
- wbudowana obsługa literate programming
Rozszerzenia plików
Pliki Haskella mają rozszerzenia:
hs
– standardowe pliki Haskellalhs
– pliki w stylu literate programming
Kompilator
Głównym kompilatorem Haskella jest Glasgow Haskell Compiler (GHC), który generuje szybki kod maszynowy, porównywalny z kodem generowanym przez GCC.
Przykłady kodu
-- Komentarz w jednej linijce
{- Komentarze na
wiele linijek
{- można zagnieżdżać -}
-}
-- Funkcja obliczająca silnię
silnia 0 = 1
silnia n = n * silnia (n - 1)
-- Przykład obliczania liczb Fibonacciego
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)
-- Funkcja do obliczania wartości wyrażeń matematycznych
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
-- Sortowanie szybkie
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)
Linki zewnętrzne
```