article sur le Haskell, Explication sur le Haskell

Haskell Article, Signification, Explication

       

Haskell est un langage de programmation fonctionnel, comme Lisp. Son nom vient de celui du mathématicien Haskell Brooks Curry. Il a été créé en 1985. Le dernier standard semi-officiel est le Haskell 98, conçu pour définir une version minimale et portable du langage à des fins pédagogiques, et comme une base pour de futures extensions. Le langage continue d'évoluer rapidement, avec Hugs et GHC (voir ci-dessous), constituant ainsi le standard de facto.

Les fonctionnalités les plus intéressantes du Haskell sont le support pour les fonctions récursives, l'inférence de type, les listes en compréhension et l'évaluation paresseuse. Combinées ensembles, de telles fonctionnalités peuvent rendre l'écriture de fonctions dont l'écriture aurait été difficile dans un langage impératif presque triviale. C'est le langage fonctionnel, en 2002, sur lequel le plus de recherches sont entreprises. Plusieurs variantes ont été développées : des versions parallélisées de la part du MIT et de Glasgow, toute deux appelées Parrallel Haskell, des versions plus parallélisées et plus distribuées, appelées Distributed Haskell (anciennement Goffin) et Eden, une version d'exécution spéculative, Eager Haskell et plusieurs versions orientées objets, Haskell++, O'Haskell et Mondrian.

Il existe aussi un langage similaire au Haskell qui offre un support pour la création de GUI, le Concurrent Clean.

Une version éducative de Haskell appelée Gofer a été développé par Mark Jones, et a finalement été supplantée par HUGS, le Système Gofer de l'Utilisateur Haskell (Haskell User's Gofer System).

Table of contents
1 Exemple de code
2 Implémentations
3 Voir aussi
4 Liens externes

Exemple de code

La définition classique de la fonction factorielle:
fac 0 = 1
fac n = n * fac (n - 1)

La définition élégante de la fonction factorielle (qui utilise la fonction Haskell product et la notation sur les liste) :
fac n = product [1..n]

Une implémentation naïve de la fonction qui retourne le nième nombre de la Suite de Fibonacci :
fib 0 = 0
fib 1 = 1
fib n = fib (n - 2) + fib (n - 1)

Une fonction qui retourne la liste des nombres de Fibonacci en un temps linéaire :
fibs = 0 : 1 : (zipWith (+) fibs (tail fibs))

La fonction précédente créé une liste infinie, ce qui est tout à fait possible grâce à l'évaluation paresseuse. On peut aussi implémenter fib de cette manière:
fib n = fibs !! n
(!! est un operateur qui retourne le nième élément d'une liste).

L'algorithme Quicksort peut être élégamment écrit en Haskell avec l'aide de la manipulation de listes :
qsort []     = []
qsort (x:xs) =
  qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
  where
    elts_lt_x   = [y | y <- xs, y < x]
    elts_greq_x = [y | y <- xs, y >= x]
(Notez qu'à cause de nombreuse copie et concaténation de listes, ce code peut être vraiment lent, ceci dépendant de l'implémentation)

Implémentations

Les implémentations suivantes sont toute compatibles (ou presque compatibles) avec le standard Haskell 98, et sont distribuées sous licences libres. Il n'y a pas d'implémentation commerciales du Haskell à ce jour.
  • Hugs ([1]) est un interpréteur bytecode. Il offre une compilation rapide et une vitesse d'exécution raisonnable. Il possède aussi une bibliothèque graphique simple. Hugs est très approprié à l'apprentissage du Haskell, mais il ne faut pas en déduire que Hugs est une implémentation simpliste. C'est la plus portable et la plus légère des implémentation du Haskell.
  • GHC ([1]). Le Compilateur Haskell de Glasgow (Glasgow Haskell Compiler) compile le code en natif sur nombre d'architectures, et compile aussi en C. GHC est probablement le plus populaire des compilateurs Haskell, et il contient des bibliothèques très utiles (par exemple des bindings pour OpenGL) qui ne marchent qu'avec GHC.
  • nhc98 ([1]) est un autre interpréteur bytecode, mais le bytecode s'exécute plus vite qu'avec Hugs. Nhc98 se concentre sur un usage minimal de la mémoire, et c'est un choix recommandé pour les vieilles machines.
  • HBC est un autre compilateur natif. Il n'est plus développé depuis quelque temps, mais encore utilisable.

Voir aussi

Liens externes


C'est un article concernant le Haskell. La page contient la signification du Haskell , Description et explication au sujet de Haskell

recherche quelque chose