Bases & syntaxe
Déclaration de fonction
add :: Int -> Int -> Int
add x y = x + y
Utilisé pour définir des fonctions avec des types spécifiques.
Fonction anonyme (lambda)
\ x y -> x + y
Pour créer rapidement des fonctions sans nom.
Structures de données
Liste
[1, 2, 3, 4, 5]
Utilisé pour stocker une collection d'éléments du même type.
Tuple
(1, "hello", True)
Pour regrouper des valeurs de différents types.
Fonctions & methodes essentielles
Map
map (+1) [1, 2, 3] -- [2, 3, 4]
Applique une fonction à chaque élément d'une liste et retourne la nouvelle liste.
Filter
filter even [1, 2, 3, 4] -- [2, 4]
Retourne les éléments de la liste qui satisfont une condition.
Patterns courants
Pattern matching sur des listes
head' :: [a] -> a
head' [] = error "Empty list"
head' (x:_) = x
Pour extraire le premier élément d'une liste.
Destructuration de tuples
swap :: (a, b) -> (b, a)
swap (x, y) = (y, x)
Pour inverser les éléments d'un tuple.
Operations avancees
Compréhension des listes
squares :: [Int]
squares = [x * x | x <- [1..10]]
Pour générer une liste en utilisant une expression et une condition.
Fonction récursive
factorial :: Int -> Int
factorial 0 = 1
factorial n = n * factorial (n - 1)
Pour calculer le factoriel d'un nombre.
Debugging & outils
Print debugging
debugStrLn :: String -> IO ()
debugStrLn s = putStrLn $ "DEBUG: " ++ s
Pour afficher des messages de débogage en console.
GHCi REPL
:t expression // Affiche le type d'une expression
:break line // Met un point d'arrêt à une ligne spécifique
:continue // Continue l'exécution après un point d'arrêt
:print variable // Affiche la valeur d'une variable dans l'environnement actuel
Outils de débogage et exploration dans le GHCi (Haskell Interactive).