📜 Récap’
Pattern matching
Brique fondamentale de F♯
Combine "comparaison de structure de données" et "déconstruction"
S'utilisent presque partout :
match expression
et blocfunction
bloc
try/with
let binding
, y.c. paramètre de fonction
Peut s'abstraire en fonction
fold
associée à un type union
Patterns
Constant - Identifier - Wilcard
1
, Color.Red
- Some 1
- _
Collection : Cons - List - Array
head :: tail
- [1; 2]
Product type : Record - Tuple
{ A = a }
- a, b
Type Test
:? Subtype
Logique : OR, AND
1 | 2
, P1 & P2
Variables - Alias
head :: _
- (0, 0) as origin
+ Les guards when
dans les match expressions
Active Patterns
Extension du pattern matching
Basés sur fonction + metadata → Citoyens de 1ère classe
4 types : total simple/multiple, partiel (simple), paramétré
Un peu tricky Ă comprendre mais on s'habitue vite
S'utilisent pour :
Ajouter de la sémantique sans recourir aux types union
Simplifier / factoriser des guards
Wrapper des méthodes de la BCL
Extraire un ensemble de données d'un objet
...
Compléments
📜 Match expressions, F# for fun and profit, Juin 2012
📜 Domain modelling et pattern matching : Roman numeral, F# for fun and profit, Juin 2012
📜 Recursive types and folds (6 articles), F# for fun and profit, Août 2015
📹 A Deep Dive into Active Patterns - Repo github
Exercices
Les exercices suivants sur exercism.io (se créer un compte) peuvent se résoudre avec des active patterns :
Collatz Conjecture (easy)
Darts (easy)
Queen Attack (medium)
Robot Name (medium)
Last updated
Was this helpful?