» 
Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese
Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese

definition - Haskell

definition of Wikipedia

   Advertizing ▼

synonyms - Haskell

Haskell (n.)

de Haskell

phrases

   Advertizing ▼

Wikipedia

Haskell

                   
Page d'aide sur l'homonymie Pour les articles homonymes, voir Haskell (homonymie).
Haskell
Logo.
Auteur le comité Haskell
Développeurs la communauté Haskell
Paradigmes fonctionnel
Typage Fort, statique
Dialectes Helium, O'Haskell, Template Haskell, PolyP
Influencé par Lisp et Scheme, ISWIM, FP, APL, Hope, SISAL, Miranda, ML, Lazy ML, Orwell, Alfl, Id, Ponder
Implémentations GHC, Hugs, Yhc,
Système d'exploitation Multiplate-forme
Site web http://www.haskell.org

Haskell est un langage de programmation fonctionnel. Il est fondé sur le lambda-calcul et la logique combinatoire. Son nom vient du mathématicien et logicien Haskell Brooks Curry. Il a été créé en 1990 par un comité de chercheurs en théorie des langages intéressés par les langages fonctionnels et l'évaluation paresseuse. Le dernier standard est Haskell 2010 : c'est une version minimale et portable du langage conçue à des fins pédagogiques et pratiques, dans un souci d'interopérabilité entre les implémentations du langage et comme base de futures extensions. Le langage continue d'évoluer rapidement, principalement avec GHC, constituant ainsi un standard de facto comprenant de nombreuse extensions.

Sommaire

  Historique

La sortie de Miranda en 1985 provoqua un regain d'intérêt pour les langages fonctionnels à évaluation paresseuse et entraîna une explosion du nombre de tels langages expérimentaux de sorte qu'en 1987 plus d'une douzaine d'entre eux étaient disponibles. Miranda était de loin le plus populaire mais son modèle propriétaire fermé n'encourageait pas les contributions et à la conférence FPCA '87 (Functional Programming Languages and Computer Architecture : Langages de Programmation Fonctionnels et Architecture des Ordinateurs) à Portland en Oregon une réunion de chercheurs proéminent du domaine aboutit à la conclusion qu'il serait souhaitable d'établir un standard ouvert qui pourrait servir de base commune à de futures recherches sur les langages fonctionnels. Dans ce but ils formèrent un comité dont la tâche serait de mettre en commun les points forts des prototypes de l'époque.

  Haskell 1.0 à 1.4

Le travail du comité se poursuivit de réunion en réunion et aboutit en 1990 à la définition de Haskell 1.0, suivi par diverses révisions pour les version 1.1, 1.2, 1.3 et 1.4.

  Haskell 98

Le rapport Haskell 98 établit un standard durable sur lequel toutes les implémentations subséquentes se basèrent. Une version révisée parue en janvier 2003.

  Haskell 2010

Le procédé de révision du standard Haskell, nommé Haskell' (Haskell Prime) commença en 2006. Originellement entrepris dans l'optique de publier une nouvelle version du standard Haskell, l'effort peina à se mettre en place de façon durable et s'est maintenant fixé un objectif plus restreint : publier régulièrement (théoriquement une fois par an) une révision du rapport de 98 intégrant quelques nouveautés introduites depuis par GHC et incontestablement acceptées et utilisées par la communauté. Haskell 2010 a ainsi ajouté une définition du mécanisme d'interface avec d'autres langages en Haskell (la FFI : Foreign Functions Interface) et supprimé les motifs "n+k" du langage (qui permettaient d'écrire : decrement (n+1) = n). Il a également officialisé un mécanisme pour spécifier quel standard on souhaite respecter dans un fichier source donné, ainsi que les extensions éventuelles, entérinant la nature plutôt modulaire du Haskell utilisée en pratique.

  Versions de recherche

En 2012, Haskell est probablement le langage fonctionnel sur lequel le plus de recherches ont été entreprises. Plusieurs variantes ont été développées. Des versions parallélisées faites au Laboratory for Computer Science du Massachusetts Institute of Technology (MIT) et à l'Université de Glasgow ont toutes deux été appelées Parallel Haskell. Des versions plus parallélisées et plus distribuées sont appelées Distributed Haskell (anciennement Goffin) et Eden, on trouve également une tentative récente d'utiliser Haskell dans le nuage appelée Cloud Haskell. Une version d'exécution spéculative, Eager Haskell et plusieurs versions orientées objets, Haskell++, O'Haskell et Mondrian ont vu le jour. Ces diverses versions de recherche étaient assez souvent basées sur GHC et ont fréquemment laissé leurs traces dans ce compilateur lorsque l'expérimentation s'est révélée fructueuse, inspirant ainsi le support actuel pour les fils d'exécutions et les diverses formes de parallélisation du code.

  Fonctionnalités

Les fonctionnalités les plus intéressantes de Haskell sont le support des fonctions récursives, l'inférence de types, les listes en compréhension et l'évaluation paresseuse. Ces fonctionnalités, surtout si on les combine, facilitent l'écriture et l'utilisation de fonctions. Le système de type, objet de nombreuses recherches, est également l'un des plus expressifs et apte à représenter de nombreuses contraintes ordinairement vérifiées à l'exécution de façon statique. Haskell se distingue également par l'utilisation de monades pour les entrées/sorties rendue nécessaire par l'une des plus importante particularité du langage : Haskell est un langage fonctionnel pur, ce qui signifie que par défaut aucun effet de bord n'est autorisé, ni les entrées/sorties, ni même l'affectation à une variable. La plupart des langages fonctionnels encourage ce style mais Haskell l'impose dans tout code qui ne signale pas explicitement par son type qu'il contient des effets de bord.

  Exemples de code

  Fonction factorielle (récursive)

La définition classique de la fonction factorielle :

  1.  fac 0 = 1
    
  2.  fac n = n * fac (n - 1)
    


  Fonction factorielle (avec product)

La définition élégante de la fonction factorielle (qui utilise la fonction Haskell product et la notation sur les listes) :

 fac n = product [1..n]


  Fonction Fibonacci (naïve)

Une implémentation naïve de la fonction qui retourne le n-ième nombre de la suite de Fibonacci :

  1.  fib 0 = 0
    
  2.  fib 1 = 1
    
  3.  fib n = fib (n - 2) + fib (n - 1)
    

  Fonction Fibonacci (seconde version)

Une fonction qui retourne la liste des nombres de Fibonacci :

 fibs = 0 : 1 : (zipWith (+) fibs (tail fibs))


La valeur précédente est une liste infinie, ce qui est tout à fait possible grâce à l'évaluation paresseuse. Grâce à cette liste, on peut implémenter fib de cette manière :

 fib n = fibs !! n


(!! est un opérateur qui retourne le n-ième élément d'une liste).

Comme fibs est évalué de manière paresseuse dans fib, un appel à fib n ne provoque que l'évaluation des n premiers termes de fibs. Cette évaluation se fait en temps linéaire. Finalement, fib retourne le n-ième terme de la suite de Fibonacci en temps linéaire.

  Tri rapide (quicksort)

L'algorithme du tri rapide peut être élégamment écrit en Haskell avec l'aide de la manipulation de listes :

  1. qsort [] = []
    
  2. qsort (x:xs) =
    
  3.   qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
    
  4.   where
    
  5.     elts_lt_x = [y | y <- xs, y < x]
    
  6.     elts_greq_x = [y | y <- xs, y >= x]
    

Ou

  1. qsort []     = []
    
  2. qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
    


Notez qu'à cause des nombreuses copies et concaténations de listes, ce code peut être vraiment lent, en fonction de l'implémentation.

  Implémentations

Les implémentations suivantes sont toutes compatibles (ou presque compatibles) avec le standard Haskell 98, et sont distribuées sous licences libres. Toutes les implémentations Haskell sont à ce jour des logiciels libres.

  • GHC. 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.
  • Hugs 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 se prête bien à l'apprentissage de 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émentations de Haskell.
  • nhc98 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 il reste encore utilisable.

  Quelques succès d'Haskell

Parce que non-procédural, Haskell permet de limiter considérablement les besoins de débogage ; il arrive donc que des projets soient réalisés en Haskell avant d'être disponibles dans d'autres langages. Les exemples les plus connus sont :

  • le programme nget, permettant de récolter toutes les images d'un newsgroup Usenet, dont la première version fut codée en Haskell (une version en langage C++ fut ensuite développée pour en faciliter le portage).

  Langages similaires à Haskell

  • le Concurrent Clean, qui offre un support pour la création de GUI ainsi que CAL (Quarks Framework) qui tourne sur VM Java et est prévu pour s'intégrer comme extension d'API Java.
  • une version éducative de Haskell, appelée Gofer, a été développée par Mark Jones, et a finalement été supplantée par HUGS, le Système Gofer de l'Utilisateur Haskell (Haskell User's Gofer System).
  • les langages à la ML sont aussi assez proches de Haskell, par leurs approches fonctionnelles pures, et statiquement typée. Caml est le plus populaire des représentants de cette famille de langages, connu en France pour son enseignement en classe préparatoire et à l'Université. En France, Ocaml reste ainsi beaucoup plus pratiqué que Haskell.

  Voir aussi

Sur les autres projets Wikimedia :

  Articles connexes

  Liens externes


   
               

 

All translations of Haskell


sensagent's content

  • definitions
  • synonyms
  • antonyms
  • encyclopedia

  • définition
  • synonyme

Dictionary and translator for handheld

⇨ New : sensagent is now available on your handheld

   Advertising ▼

sensagent's office

Shortkey or widget. Free.

Windows Shortkey: sensagent. Free.

Vista Widget : sensagent. Free.

Webmaster Solution

Alexandria

A windows (pop-into) of information (full-content of Sensagent) triggered by double-clicking any word on your webpage. Give contextual explanation and translation from your sites !

Try here  or   get the code

SensagentBox

With a SensagentBox, visitors to your site can access reliable information on over 5 million pages provided by Sensagent.com. Choose the design that fits your site.

Business solution

Improve your site content

Add new content to your site from Sensagent by XML.

Crawl products or adds

Get XML access to reach the best products.

Index images and define metadata

Get XML access to fix the meaning of your metadata.


Please, email us to describe your idea.

WordGame

The English word games are:
○   Anagrams
○   Wildcard, crossword
○   Lettris
○   Boggle.

Lettris

Lettris is a curious tetris-clone game where all the bricks have the same square shape but different content. Each square carries a letter. To make squares disappear and save space for other squares you have to assemble English words (left, right, up, down) from the falling squares.

boggle

Boggle gives you 3 minutes to find as many words (3 letters or more) as you can in a grid of 16 letters. You can also try the grid of 16 letters. Letters must be adjacent and longer words score better. See if you can get into the grid Hall of Fame !

English dictionary
Main references

Most English definitions are provided by WordNet .
English thesaurus is mainly derived from The Integral Dictionary (TID).
English Encyclopedia is licensed by Wikipedia (GNU).

Copyrights

The wordgames anagrams, crossword, Lettris and Boggle are provided by Memodata.
The web service Alexandria is granted from Memodata for the Ebay search.
The SensagentBox are offered by sensAgent.

Translation

Change the target language to find translations.
Tips: browse the semantic fields (see From ideas to words) in two languages to learn more.

last searches on the dictionary :

5161 online visitors

computed in 0.078s

I would like to report:
section :
a spelling or a grammatical mistake
an offensive content(racist, pornographic, injurious, etc.)
a copyright violation
an error
a missing statement
other
please precise:

Advertize

Partnership

Company informations

My account

login

registration

   Advertising ▼