Tutoriel Haskell : apprendre Haskell en toute simplicité

Haskell occupe une place particulière parmi les langages de programmation fonctionnelle : depuis la définition de la première version en 1990, Haskell est considéré comme un quasi-standard de langage qui suit le paradigme de programmation fonctionnelle. Ce n’est pas un hasard si de nombreux autres langages fonctionnels s’inspirent d’Haskell. L’apprentissage de ce langage de programmation peut être frustrant au début, notamment car les utilisateurs inexpérimentés doivent se familiariser avec les concepts de programmation fonctionnelle. Cependant, une fois les premiers obstacles surmontés, même les novices peuvent parvenir à entrer dans le monde de la programmation Haskell.

Dans ce tutoriel Haskell, pour un apprentissage aussi aisé que possible, nous vous présentons étape par étape, comment installer le langage fonctionnel et comment fonctionne la programmation avec Haskell.

Installer et démarrer Haskell

Comme pour de nombreux autres langages de programmation, vous disposez de différentes possibilités pour préparer votre système à travailler avec Haskell. La solution la plus courante pour tous ceux qui souhaitent apprendre Haskell et programmer confortablement le langage est GHCi. Il s’agit d’un environnement de développement interactif prêt à l’emploi, disponible dans un pack comprenant le Glasgow Haskell Compiler. En plus du compilateur, des bibliothèques Haskell sont prévues pour lesquelles il vous faudra un logiciel de création comme Cabal ou Stack.

Note

La structure globale composée du compilateur Haskell et de l’application de conception correspondante est également appelée plate-forme Haskell.

Pour faciliter autant que possible votre apprentissage, installez une plate-forme Haskell complète. Vous trouverez les fichiers d’installation prêts à l’emploi pour Windows, macOS et différentes distributions de Linux en téléchargement gratuit (incluant la notice d’installation) par ex. sur le site Web officiel du projet Haskell.

Dans les systèmes Linux, vous pouvez également choisir le chemin d’installation via le gestionnaire 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’installation, vous pourrez démarrer l’environnement de développement interactif à tout moment avec la commande « ghci » sur la ligne de commande de votre système, sous Windows via PowerShell, par exemple, également recommandé pour l’installation.

Note

Veuillez noter que les versions de la plate-forme Haskell de gestion de paquets ne sont pas toujours actualisées. Le cas échéant, une actualisation des fichiers d’installation est nécessaire !

Apprendre Haskell : comprendre les principaux types de données

Haskell est un langage purement fonctionnel ce qui le rend nettement plus interactif et intelligent que les autres langages de programmation. Les types de données comme les chiffres, les signes ou les valeurs logiques (booléennes) sont déjà prédéfinis dans Haskell ou sont au moins répartis de manière intelligente par la mémoire de l’ordinateur.

Les chiffres dans Haskell

Haskell comprend, par exemple, les nombres naturels comme nombres naturels. En pratique, cela signifie qu’il n’est pas nécessaire de définir en code Haskell qu’il s’agit d’une entrée de chiffre. Si l’environnement de développement est démarré, vous pouvez également effectuer facilement des calculs avec les opérateurs 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 mathématique : 4.

Caractères alphabétiques dans Haskell

Haskell permet également de saisir les caractères alphabétiques de manière intelligente, ce que nous démontrons très simplement 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 confirmation 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 guillemets 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 correspond au terme anglais « character » qui signifie en français caractère alphabétique (lettre).

Chaîne de caractères dans Haskell

Les chaînes de caractères, mieux connues dans le langage de la programmation 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écifique, il vous suffit de placer la chaîne de caractères entre guillemets doubles. Voici un exemple avec la saisie suivante composée de chiffres et de caractères alphabé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ésentation des principaux opérateurs

Dans la section concernant les chiffres, nous avons déjà souligné que vous pouvez utiliser simplement les opérateurs mathématiques classiques (addition, soustraction, division et multiplication) dans Haskell. L’opérateur de séquence ou d’intervalle permet de disposer également d’un opérateur pour lister facilement les valeurs consécutives.

Note

L’environnement de développement Web Online Haskell Compiler a été utilisé pour l’exécution et la présentation 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 repré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 additionner, à l’aide de l’expression « 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’expression « 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) :

Soustraction dans Haskell

Si vous souhaitez ordonner à Haskell de soustraire une valeur à une autre, utilisez l’opérateur de soustraction classique, exprimé par le signe moins (-). Dans l’exemple précédent d’addition du tutoriel Haskell, remplacez simplement l’opérateur et adaptez simplement 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érations de division et de multiplication Haskell utilise également les signes classiques : le slash ou la barre oblique (/) vous permet de diviser les valeurs et avec le signe étoile (*) vous ordonnez à Haskell de multiplier 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 facilement 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 caractè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 fonctionnel. Il n’est donc pas surprenant que les fonctions jouent un rôle important dans la programmation Haskell. Comme les autres langages, Haskell a sa propre manière de déclarer et de définir les fonctions.

Note

La déclaration d’une fonction indique au compilateur qu’une fonction spécifique existe. En outre, elle indique quels paramètres attendre et l’aspect du résultat. La définition d’une fonction est l’inclusion effective de la fonction au code.

Ce tutoriel vous propose à nouveau un exemple concret de code afin d’expliciter plus précisé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émonstration plus poussée du travail avec les fonctions en Haskell pour les débutants :

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

Conseils complémentaires pour l’apprentissage et la programmation 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 conséquente. On peut par exemple recommander la série de tutoriels YouTube « Haskell for Imperative Programmers » par Philipp Hagenlocher, qui résume les composants les plus importants du langage fonctionnel dans plus de 30 vidéos thématiques. Un aperçu étendu de l’offre d’aide sur Internet figure dans la section communauté de la page officielle Haskell. Vous pouvez également vous procurer à vos frais des ouvrages comme le livre Haskell from the very beginning de John Whitington.

Lorsque vous utilisez l’environnement de développement interactif ghci, vous pouvez disposer à tout moment d’un aperçu complet des commandes disponibles lors de l’apprentissage d’Haskell. Tapez simplement la commande suivante dans la ligne de commande et confirmez la saisie avec entrée :

Prelude>:?