Haskell occupe une place par­ti­cu­lière parmi les langages de pro­gram­ma­tion fonc­tion­nelle : depuis la dé­fi­ni­tion de la première version en 1990, Haskell est considéré comme un quasi-standard de langage qui suit le paradigme de pro­gram­ma­tion fonc­tion­nelle. Ce n’est pas un hasard si de nombreux autres langages fonc­tion­nels s’inspirent d’Haskell. L’ap­pren­tis­sage de ce langage de pro­gram­ma­tion peut être frustrant au début, notamment car les uti­li­sa­teurs inex­pé­ri­men­tés doivent se fa­mi­lia­ri­ser avec les concepts de pro­gram­ma­tion fonc­tion­nelle. Cependant, une fois les premiers obstacles surmontés, même les novices peuvent parvenir à entrer dans le monde de la pro­gram­ma­tion Haskell.

Dans ce tutoriel Haskell, pour un ap­pren­tis­sage aussi aisé que possible, nous vous pré­sen­tons étape par étape, comment installer le langage fonc­tion­nel et comment fonc­tionne la pro­gram­ma­tion avec Haskell.

Installer et démarrer Haskell

Comme pour de nombreux autres langages de pro­gram­ma­tion, vous disposez de dif­fé­rentes pos­si­bi­li­tés pour préparer votre système à tra­vail­ler avec Haskell. La solution la plus courante pour tous ceux qui sou­hai­tent apprendre Haskell et pro­gram­mer con­for­ta­ble­ment le langage est GHCi. Il s’agit d’un en­vi­ron­ne­ment de dé­ve­lop­pe­ment in­te­rac­tif prêt à l’emploi, dis­po­nible dans un pack com­pre­nant le Glasgow Haskell Compiler. En plus du com­pi­la­teur, des bi­blio­thèques Haskell sont prévues pour les­quelles il vous faudra un logiciel de création comme Cabal ou Stack.

Note

La structure globale composée du com­pi­la­teur Haskell et de l’ap­pli­ca­tion de con­cep­tion cor­res­pon­dante est également appelée plate-forme Haskell.

Pour faciliter autant que possible votre ap­pren­tis­sage, installez une plate-forme Haskell complète. Vous trouverez les fichiers d’ins­tal­la­tion prêts à l’emploi pour Windows, macOS et dif­fé­rentes dis­tri­bu­tions de Linux en té­lé­char­ge­ment gratuit (incluant la notice d’ins­tal­la­tion) par ex. sur le site Web officiel du projet Haskell.

Dans les systèmes Linux, vous pouvez également choisir le chemin d’ins­tal­la­tion via le ges­tion­naire de paquets. Si vous utilisez Ubuntu ou Debian, tapez, par exemple, la commande suivante dans le terminal :

sudo apt-get install haskell-platform

À la fin de l’ins­tal­la­tion, vous pourrez démarrer l’en­vi­ron­ne­ment de dé­ve­lop­pe­ment in­te­rac­tif à tout moment avec la commande « ghci » sur la ligne de commande de votre système, sous Windows via Po­wer­Shell, par exemple, également re­com­mandé pour l’ins­tal­la­tion.

Note

Veuillez noter que les versions de la plate-forme Haskell de gestion de paquets ne sont pas toujours ac­tua­li­sées. Le cas échéant, une ac­tua­li­sa­tion des fichiers d’ins­tal­la­tion est né­ces­saire !

Apprendre Haskell : com­prendre les prin­ci­paux types de données

Haskell est un langage purement fonc­tion­nel ce qui le rend nettement plus in­te­rac­tif et in­tel­li­gent que les autres langages de pro­gram­ma­tion. Les types de données comme les chiffres, les signes ou les valeurs logiques (boo­léennes) sont déjà pré­dé­fi­nis dans Haskell ou sont au moins répartis de manière in­tel­li­gente par la mémoire de l’or­di­na­teur.

Les chiffres dans Haskell

Haskell comprend, par exemple, les nombres naturels comme nombres naturels. En pratique, cela signifie qu’il n’est pas né­ces­saire de définir en code Haskell qu’il s’agit d’une entrée de chiffre. Si l’en­vi­ron­ne­ment de dé­ve­lop­pe­ment est démarré, vous pouvez également effectuer fa­ci­le­ment des calculs avec les opé­ra­teurs habituels plus (+) ou moins (-). Tapez par exemple « 2+2 » et confirmez la saisie grâce à la touche de saisie :

Prelude> 2+2

Haskell affiche ensuite le résultat de ce calcul ma­thé­ma­tique : 4.

Ca­rac­tères al­pha­bé­tiques dans Haskell

Haskell permet également de saisir les ca­rac­tères al­pha­bé­tiques de manière in­tel­li­gente, ce que nous dé­mon­trons très sim­ple­ment dans ce tutoriel Haskell à l’aide d’un exemple : tout d’abord, entrons l’option « t » dans la ligne de commande. Cela permet à la ligne de commande, après con­fir­ma­tion de la commande, d’indiquer de quel type de donnée il s’agit. Après un espace, ajoutez un caractère de votre choix entre guil­le­mets simples ou doubles et confirmez la saisie avec entrée :

Prelude>:t "a"

Le résultat, correct dans ce cas, est le suivant « [Char] », ce qui cor­res­pond au terme anglais « character » qui signifie en français caractère al­pha­bé­tique (lettre).

Chaîne de ca­rac­tères dans Haskell

Les chaînes de ca­rac­tères, mieux connues dans le langage de la pro­gram­ma­tion sous le terme anglais « strings », peuvent également être reconnues en tant que telles sans problème par Haskell. Même dans ce cas, vous n’avez besoin d’aucune syntaxe spé­ci­fique, il vous suffit de placer la chaîne de ca­rac­tères entre guil­le­mets doubles. Voici un exemple avec la saisie suivante composée de chiffres et de ca­rac­tères al­pha­bé­tiques :

Prelude>:t "12345abcde"

En remettant ici l’option « t », Haskell nous indique de nouveau dans le résultat de quel type de données il s’agit. Comme dans l’exemple précédent, la ligne de commande indique « Char ».

Apprendre Haskell : pré­sen­ta­tion des prin­ci­paux opé­ra­teurs

Dans la section con­cer­nant les chiffres, nous avons déjà souligné que vous pouvez utiliser sim­ple­ment les opé­ra­teurs ma­thé­ma­tiques clas­siques (addition, sous­trac­tion, division et mul­ti­pli­ca­tion) dans Haskell. L’opérateur de séquence ou d’in­ter­valle permet de disposer également d’un opérateur pour lister fa­ci­le­ment les valeurs con­sé­cu­tives.

Note

L’en­vi­ron­ne­ment de dé­ve­lop­pe­ment Web Online Haskell Compiler a été utilisé pour l’exécution et la pré­sen­ta­tion des résultats des extraits de code suivants de ce tutoriel Haskell.

Addition dans Haskell

L’opérateur d’addition pour l’ajout de deux valeurs ou plus est également re­pré­senté dans Haskell, de manière classique, par le signe plus (+). Dans l’exemple de code suivant inséré dans le fichier main.hs, nous relions deux variables (« var1 » et « var2 »), que nous devons ad­di­tion­ner, à l’aide de l’ex­pres­sion « let ». La ligne de commande doit enfin présenter le résultat sous la forme d’un message texte, ce qui est défini dans l’ex­pres­sion « putStrLn » :

main = do 
let var1 = 2
let var2 = 3
putStrLn "Les deux chiffres donnent au total :"
print(var1 + var2)

Dans l’outil en ligne mentionné ci-dessus, voici l’aspect de l’entrée (fenêtre de gauche) et du résultat (fenêtre de droite) :

Sous­trac­tion dans Haskell

Si vous souhaitez ordonner à Haskell de sous­traire une valeur à une autre, utilisez l’opérateur de sous­trac­tion classique, exprimé par le signe moins (-). Dans l’exemple précédent d’addition du tutoriel Haskell, remplacez sim­ple­ment l’opérateur et adaptez sim­ple­ment le message du résultat :

main = do 
let var1 = 2 
let var2 = 3 
putStrLn "Le résultat de la soustraction des deux chiffres est :"
print(var1 - var2)
Note

Pour les opé­ra­tions de division et de mul­ti­pli­ca­tion Haskell utilise également les signes clas­siques : le slash ou la barre oblique (/) vous permet de diviser les valeurs et avec le signe étoile (*) vous ordonnez à Haskell de mul­ti­plier les valeurs.

Listage de valeurs dans Haskell

L’opérateur « séquence » est un opérateur spécial d’Haskell. Il vous permet de déclarer fa­ci­le­ment un listage avec une séquence de valeurs. Il est indiqué par « [..] ». Par exemple, si vous souhaitez qu’Haskell affiche tous les chiffres de 1 à 10, vous pouvez saisir « [1..10] » pour cette plage de chiffres. Il en est de même pour les ca­rac­tères, par exemple avec « [a..z] » vous pouvez afficher l’alphabet dans le code Haskell. Voici un exemple simple pour l’opérateur « séquence » :

main :: IO()
main = do
print [1..10]

Haskell : comment déclarer et définir les fonctions

Haskell est un langage purement fonc­tion­nel. Il n’est donc pas sur­pre­nant que les fonctions jouent un rôle important dans la pro­gram­ma­tion Haskell. Comme les autres langages, Haskell a sa propre manière de déclarer et de définir les fonctions.

Note

La dé­cla­ra­tion d’une fonction indique au com­pi­la­teur qu’une fonction spé­ci­fique existe. En outre, elle indique quels pa­ra­mètres attendre et l’aspect du résultat. La dé­fi­ni­tion d’une fonction est l’inclusion effective de la fonction au code.

Ce tutoriel vous propose à nouveau un exemple concret de code afin d’ex­pli­ci­ter plus pré­ci­sé­ment le principe de fonction :

add :: Integer -> Integer -> Integer   --function declaration
add x y =  x + y                       --function definition
main = do 
putStrLn "La somme des deux chiffres est :"
print(add 3 5)    --calling a function

La fonction est déclarée dans la première ligne de code, les trois valeurs de la fonction (saisie et résultat) sont des nombres entiers. À la ligne 2, la fonction est définie : les deux arguments « x » et « y » sont ajoutés. Avec la méthode « main » déjà connue, le code est compilé et le résultat de la fonction est délivré pour les deux valeurs saisies « 3 » et « 5 ».

Le tutoriel YouTube suivant offre une dé­mons­tra­tion plus poussée du travail avec les fonctions en Haskell pour les débutants :

AtsPtAf2avQ.jpg Pour afficher cette vidéo, des cookies de tiers sont nécessaires. Vous pouvez consulter et modifier vos paramètres de cookies ici.

Conseils com­plé­men­taires pour l’ap­pren­tis­sage et la pro­gram­ma­tion avec Haskell

Haskell est un langage très populaire, c’est pourquoi l’offre d’aide sous la forme de manuels en ligne, tutoriels et forums est très con­sé­quente. On peut par exemple re­com­man­der la série de tutoriels YouTube « Haskell for Im­pe­ra­tive Pro­gram­mers » par Philipp Ha­gen­lo­cher, qui résume les com­po­sants les plus im­por­tants du langage fonc­tion­nel dans plus de 30 vidéos thé­ma­tiques. Un aperçu étendu de l’offre d’aide sur Internet figure dans la section com­mu­nauté de la page of­fi­cielle Haskell. Vous pouvez également vous procurer à vos frais des ouvrages comme le livre Haskell from the very beginning de John Whi­ting­ton.

Lorsque vous utilisez l’en­vi­ron­ne­ment de dé­ve­lop­pe­ment in­te­rac­tif ghci, vous pouvez disposer à tout moment d’un aperçu complet des commandes dis­po­nibles lors de l’ap­pren­tis­sage d’Haskell. Tapez sim­ple­ment la commande suivante dans la ligne de commande et confirmez la saisie avec entrée :

Prelude>:?
Aller au menu principal