Haskell 1840 0

O temacie

Autor Adanos

Zaczęty 1.04.2009 roku

Wyświetleń 1840

Odpowiedzi 0

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Haskell
2009-04-01, 18:21(Ostatnia zmiana: 2009-04-01, 18:24)
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.htm

Pliki Haskella zapisuje się z rozszerzeniem .hs

Haskell dla programistów C (po angielsku): http://www.haskell.org/~pairwise/intro/intro.html

Poró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_industry
Więcej na: http://www.haskell.org/

Bibliografia:
http://wazniak.mimuw.edu.pl/index.php?titl...i_imperatywnego


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry