Dzisiaj jest 12 grudnia 2024 r.
Chcę dodać własny artykuł

Haskell

„`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 Haskella
  • lhs – 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

```

Najnowsze aktualności: