LANGAGE HASKELL

Programmation fonctionnelle – Fiche complète Licence Pro

1. Présentation générale de Haskell

Haskell est un langage de programmation purement fonctionnel, fortement typé et évalué paresseusement (lazy evaluation). Il est principalement utilisé dans l’enseignement, la recherche et les domaines nécessitant une forte fiabilité logicielle.

Haskell repose sur le paradigme de la programmation fonctionnelle : le programme est une composition de fonctions mathématiques.

2. Programmation fonctionnelle : principes clés

Fonctions comme éléments centraux

En programmation fonctionnelle, une fonction est une entité de premier ordre : elle peut être stockée dans une variable, passée en paramètre et retournée par une autre fonction.

Absence d’effets de bord

Une fonction pure ne modifie aucun état externe et renvoie toujours le même résultat pour les mêmes arguments.

Fonction pure = pas de variable globale modifiée + pas d’entrée/sortie cachée

3. Définition d’une fonction en Haskell

Une fonction en Haskell est définie par une équation. Il n’y a pas d’instructions impératives mais des expressions.

double x = x * 2
Exemple d’appel : double 5 → résultat : 10

4. Typage des fonctions

Haskell utilise un typage statique fort : le type d’une fonction est connu à la compilation.

double :: Int -> Int
double x = x * 2
Int -> Int signifie que la fonction prend un entier en entrée et renvoie un entier en sortie.

5. Fonctions à plusieurs paramètres

addition x y = x + y

En réalité, une fonction Haskell ne prend qu’un seul paramètre : les fonctions à plusieurs paramètres utilisent le curryfication.

addition :: Int -> Int -> Int
Une fonction à n paramètres est une suite de fonctions à un paramètre.

6. Fonctions anonymes (lambda)

Une fonction anonyme est une fonction sans nom, définie à la volée avec la syntaxe lambda.

\x -> x * 2
Utilisation :
map (\x -> x * 2) [1,2,3]
-- Résultat : [2,4,6]

7. Fonctions d’ordre supérieur

Une fonction d’ordre supérieur est une fonction qui prend une fonction en paramètre ou renvoie une fonction.

Fonctions clés

map (+1) [1,2,3]      -- [2,3,4]
filter even [1..10]  -- [2,4,6,8,10]

8. Récursivité

En Haskell, les boucles sont remplacées par la récursivité.

factorielle 0 = 1
factorielle n = n * factorielle (n-1)
La récursivité est un mécanisme fondamental en programmation fonctionnelle.

9. Immuabilité des données

En Haskell, une valeur ne peut jamais être modifiée après sa création. Toute transformation crée une nouvelle valeur.

10. Points clés à retenir pour l’examen