# Tutoriel Haskell : apprendre Haskell en toute simplicité

[Haskell](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/langage-haskell/ "Langage 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](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/paradigmes-de-programmation/ "Paradigmes 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](https://www.haskell.org/ghc/ "Page d’accueil officielle de Glasgow Haskell Compilers (GHC)"). En plus du compilateur, des bibliothèques Haskell sont prévues pour lesquelles il vous faudra un **logiciel de création** comme [Cabal](https://www.haskell.org/cabal/ "Des applications et bibliothèques avec Cabal") ou [Stack](https://docs.haskellstack.org/en/stable/README/ "Logiciel 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](https://www.haskell.org/platform/ "haskell.org").

[![Image: Tutoriel Haskell : fichiers d’installation sur le site Web Haskell ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/2/e/csm_DE-haskell-tutorial-1_bd677df9a8.webp "Tutoriel Haskell : fichiers d’installation sur le site Web Haskell ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-1.png) L’installation des composants Haskell sous Windows est liée au gestionnaire de paquets Chocolatey conçu pour Windows.       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 :

```none
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](https://www.ionos.fr/digitalguide/serveur/know-how/windows-powershell/ "Windows 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 :

```none
Prelude> 2+2
```

Haskell affiche ensuite le **résultat** de ce calcul mathématique : 4.

[![Image: Windows PowerShell : exemple du tutoriel Haskell ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/d/9/csm_DE-haskell-tutorial-2_171e682fc3.webp "Windows PowerShell : exemple du tutoriel Haskell ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-2.png) Au lancement de l’environnement de développement ghci, tapez simplement « ghci » dans la ligne de commande de votre système et confirmez la saisie avec entrée.       ###  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 :

```none
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).

[![Image: Apprendre Haskell : résultat avec des caractères alphabétiques ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/e/a/csm_DE-haskell-tutorial-3_dab276bb28.webp "Apprendre Haskell : résultat avec des caractères alphabétiques ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-3.png) Résultat Haskell avec les caractères saisis dans Windows PowerShell       ###  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 :

```none
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 ».

[![Image: Tutoriel Haskell : saisie de chaîne de caractères dans ghci (Windows PowerShell) ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/3/1/csm_DE-haskell-tutorial-4_2b149dd2cd.webp "Tutoriel Haskell : saisie de chaîne de caractères dans ghci (Windows PowerShell) ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-4.png) La chaîne de caractères montrée en exemple dans le tutoriel Haskell est identifiée correctement par Haskell comme saisie de caractères.       ##  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](https://www.tutorialspoint.com/compile_haskell_online.php?external-link-window) 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** » :

```none
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) :

[![Image: Exemple Haskell : addition de deux valeurs ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/c/e/csm_DE-haskell-tutorial-5_cd337dd8a9.webp "Exemple Haskell : addition de deux valeurs ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-5.png) Pour apprendre Haskell, il n’est pas nécessaire de repenser les opérations mathématiques : le langage fonctionnel comprend les signes classiques comme le signe plus.       ###  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 :

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

[![Image: Apprendre Haskell : soustraction de deux variables de valeurs ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/8/6/csm_DE-haskell-tutorial-6_f19db2705d.webp "Apprendre Haskell : soustraction de deux variables de valeurs ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-6.png) Si, contrairement à nos exemples du tutoriel Haskell, vous souhaitez additionner ou soustraire d’une valeur fondamentale plus de deux valeurs, vous pouvez naturellement également le faire avec Haskell.       ---

### 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 » :

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

[![Image: Exemple Haskell : opérateur « Séquence » ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/0/6/csm_DE-haskell-tutorial-7_5aa4613393.webp "Exemple Haskell : opérateur « Séquence » ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-7.png) Avec l’opérateur « Séquence », vous obtenez facilement un résultat complet de séquences de valeurs dans Haskell.       ##  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 :

```none
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 ».

[![Image: Apprendre Haskell : déclaration et définition d’une fonction ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/6/9/csm_DE-haskell-tutorial-8_538ea10e5e.webp "Apprendre Haskell : déclaration et définition d’une fonction ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-8.png) Tutoriel Haskell : déclaration, définition et appel d’une fonction dans Online Haskell Compiler.       Le tutoriel YouTube suivant offre une démonstration plus poussée du travail avec les fonctions en Haskell pour les débutants :

[YouTube video](https://www.youtube.com/watch?v=AtsPtAf2avQ) ##  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 »](https://www.youtube.com/playlist?list=PLe7Ei6viL6jGp1Rfu0dil1JH1SHk9bgDV "YouTube Tutorial Playlist «&nbsp;Haskell for Imperative Programmers&nbsp;»") 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](https://www.haskell.org/community/ "haskell.org: Community"). Vous pouvez également vous procurer à vos frais des ouvrages comme le **livre** [*Haskell from the very beginning*](https://www.haskellfromtheverybeginning.com/ "Site officiel «&nbsp;Haskell from the very beginning&nbsp;»") 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 :

```none
Prelude>:?
```

[![Image: Tutoriel Haskell : aperçu des commandes ghci ](https://www.ionos.fr/digitalguide/fileadmin/_processed_/5/6/csm_DE-haskell-tutorial-9_4dca38c27d.webp "Tutoriel Haskell : aperçu des commandes ghci ")](https://www.ionos.fr/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-9.png) Afficher l’aperçu des commandes peut vous faciliter considérablement l’utilisation de l’environnement de développement interactif Haskell ghci.


This is a markdown version of: [https://www.ionos.fr/digitalguide/sites-internet/developpement-web/tutoriel-haskell/](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/tutoriel-haskell/) for AI/LLM consumption.