Introduction§

4 caractéristiques majeures§

Pourquoi Haskell ?§

Carte d’identité§

Langage fonctionnel§

Pureté§

Paresse§

En Haskell, les expressions ne sont pas évaluées tant que leur valeur n’est pas requise:

inc (3 + 1) est évalué en (3 + 1) + 1 et non inc 4!

Par exemple, v = 1/0 ne produit aucune erreur, car cela signifie v est défini comme étant 1/0, plutôt que calculer 1/0 et stocker le résultat dans v. Ce n’est que lorsque v sera utilisé (test d’égalité, affichage, etc.) que l’erreur surviendra.

Par conséquent, il est possible :

Typage statique fort§

A quoi sert Haskell ?§

Compilation§

Comme tous les langages fonctionnels, Haskell est particulièrement adapté aux tâches de compilation nécessitant une structure d’arbre fixe, mais une diversité croissante d’opérations pour ajouter de nouvelles transformations.

Langages dédiés§

Haskell est particulièrement adapté pour accueillir des langages dédiés à des tâches précises, sous la forme d’un ensemble de types et de fonctions à combiner pour résoudre un problème spécifique.

Par exemple diagrams un langage déclaratif en Haskell pour les graphiques vectoriels.

Le projet de l’an passé est un autre exemple.

Développement Web§

Qui utilise Haskell ?§

Qui utilise un langage dans lequel les variables ne varient pas, dans lequel on ne peut rajouter une instruction d’affichage, sans changer le type de la fonction ?

Consultez par exemple cette liste qui répertorie des entreprises qui utilisent Haskell.

Compilation§

GHC§

Mode interactif§

GHCi est un REPL (Read-Eval-Print-Loop) qui accompage GHC.

Vous pouvez évaluer des expressions, demander le type d’une expression avec :type (:t), charger des fichiers Haskell avec :load (:l) et :reload (:r), et bien plus encore (:? pour une liste des commandes disponibles).

Comme les entrées-sorties ne sont pas évidentes en Haskell (à cause de la paresse et de la pureté du langage), nous allons d’abord surtout utiliser ce mode interactif en tapant ghci.

Pratique§

Dessin§

Relancez plusieurs fois le programme précédent avec les instrutions suivantes:

Vous avez en main le compilateur d’un langage dédié pour réaliser des traces en SVG.

Conclusion§

Capacités/Connaissances§