Haskell jest językiem funkcyjnym (odmianą programowania deklaratywnego), znacząco różniącym się od języków imperatywnych takich jak C, C++, Pascal, Java (dodatkowo, część z nich to języki obiektowe.) Istotą programowania imperatywnego jest to, że program zawiera zmienne (lub obiekty) oraz operacje. Zmienne i obiekty charakteryzują się stanem, który może ulegać zmianie w czasie. Operacje służą wykonywaniu obliczeń, zmianie stanu zmiennych (przypisanie) lub obiektów oraz kontrolują przepływ sterowania w obrębie programu.
Paradygmat funkcyjny polega na tym, że pisząc program, tworzymy coraz bardziej skomplikowane pojęcia matematyczne, aż do osiągnięcia celu. Pojęcia te mają postać stałych i funkcji, stąd nazwa programowanie funkcyjne. Oczywiście tworzone funkcje są wykonywalne, tzn. dostarczając argumentów możemy obliczyć ich wartości.
Jego specyficzne cechy to m.in. leniwe wartościowanie, monady, statyczny polimorfizm, klasy typów, definiowalne operatory (również możliwość tworzenia nowych), strażnicy, wbudowane wsparcie dla literate programming. Haskell opiera się na rachunku lambda, przy czym lambda stała się jego logiem.
Kompilator Haskella:
http://www.haskell.org/ghc/download_ghc_6_10_1.htmlŚrodowisko "okienkowe":
http://cvs.haskell.org/Hugs/pages/downloading.htmPliki Haskella zapisuje się z rozszerzeniem .hs
Haskell dla programistów C (po angielsku):
http://www.haskell.org/~pairwise/intro/intro.htmlPorównanie programów między C a Haskellem:
C:
void qsort(int a[], int lo, int hi) {
{
int h, l, p, t;
if (lo < hi) {
l = lo;
h = hi;
p = a[hi];
do {
while ((l < h) && (a[l] <= p))
l = l+1;
while ((h > l) && (a[h] >= p))
h = h-1;
if (l < h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l < h);
t = a[l];
a[l] = a[hi];
a[hi] = t;
qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}
Haskell:
quickSort [] = []
quickSort (x:xs) = quickSort [y | y <- xs, y <= x]
++ [x]
++ quickSort [y | y <- xs, y > x]
Haskell w przemyśle:
http://www.haskell.org/haskellwiki/Haskell_in_industryWięcej na:
http://www.haskell.org/Bibliografia:
http://wazniak.mimuw.edu.pl/index.php?titl...i_imperatywnego