Le langage Haskell
C’est un langage fonctionnel typé, de la famille ML (1977 Université St Andrews en Ecosse), inspiré du λ-calcul.
Haskell (1987 en l’honneur de Haskell Curry) est fonctionnel, comme Lisp (1965 Mc Carthy), Scheme et Hope pour des passages par valeur ainsi que Caml (1977 Inria en France), Clean ou Miranda (très analogue à Haskell, 1985 D.Turner), ce qui signifie que l’on déclare pour l’essentiel des fonctions au sens mathématique. Comme Caml, il possède des types de données très rigoureux, et non seulement les contrôle comme dans la plupart des langages, mais les calcule automatiquement, ce qui évite presque toujours au programmeur de les déclarer définissant ses fonctions de la façon abstraite la plus générale possible.
Les points forts de Haskell qui en font un des langages les plus évolués actuellement, sont le caractère purement fonctionnel (y compris les effets de bord), le calcul automatique des types indiquant de plus les contraintes de classe, l’évaluation des paramètres par nécessité (évaluation paresseuse) ce qui permet, entre autre, de donner des définitions mathématiques d’objets infinis, d’autre part, la surcharge de types est mieux prévue pour les opérateurs, on peut donner des définitions par cas avec paramètres structurés un peu comme en Prolog et enfin la syntaxe est nettement moins lourde qu’en Caml, notamment l’analyseur en deux dimensions peut tenir compte de l’indentation.
Haskell est enseigné à Aix la chapelle, Austin, Bonn, Brisbane, Chalmers, Constance, Glasgow, Hull, Melbourne, Nothingham, Oklahoma, Oxford, Oviedo, Utrecht, St Andrews, Yale, York, Wellington…
Voir : www.haskell.org, www.cs.uu.nl/groups/ST/Software/Haskell et Bird Hudak P. The Haskell school of expression, Cambridge University Press Wadler P. Monads for functionnal programming, Springer Verlag LNCS 925, 1995 Voir aussi www.cs.mu.oz.au/mercury pour un langage australien « Mercury » à la fois fonctionnel et déclaratif comme Prolog.
Commandes d’utilisation
Les programmes ne sont que des définitions de fonctions et de données écrits dans un éditeur.
Sous UNIX, MacOS ou Windows :
Ouvrir l’interpréteur HASKELL, inclure le programme « nom.hs » par
:load nom.hs charge le fichier spécifié. En chargeant un fichier « essai.hs » le prompt devient essai>
:load enlève toutes les définitions chargées à l’exception du « prelude »
:also autre.hs charge un autre fichier
:reload répète la dernière commande de chargemant
:edit nom.hs Ouvre le fichier nom.hs
:edit edite le dernier module
:module <module> pose un module for evaluating expressions
:type <expr> affiche le type d’une expression
😕 affiche cette liste de commandes
:set <options> set command line options
:set help on command line options
:names [pat] édite tous les noms contenus
:browse <modules> donne la liste des fonctions et leur type dans le module indiqué
:gc force le garbage collecteur
:quit exit Hugs interpreter
…
Programmation en Haskell (89 Ko) (Cours PDF)