Introduction
Programmation fonctionnelle
Présentation du langage F#
F# et Visual Studio
F# Interactive
Fondamentaux
Immutabilité et effets de bord
Fonctions pures
Bindings
Types de données
Collections
Classes et interfaces
Contrôle du flux
Génériques
Gérer les erreurs
Fonctions
Fonctions en tant que données
Pipelining
Composition fonctionnelle
Fonctions récursives
Opérateurs symboliques
Expressions lambdas et fermetures
Pattern matching
Patterns nommés
Matching de litéraux
Regrouper des patterns
Matching de structure de donnée
Syntaxe alternative lambda
Unions discriminantes
Structures en arbre
Matching de patterns
Méthodes et propriétés
Enregistrements
Clonage
Inférence de types
Séquences
Expressions de séquence
Fonctions du module de séquence
Opérateurs agrégés
Unités de mesure
Définir les unités de mesure
Conversions
Fonctions génériques
Types génériques
Active Patterns
Active Pattern complet, avec un seul choix
Active Pattern complet, à choix multiple
Active Pattern partiel, à choix unique
Active Pattern paramétré
Modules
Modules vs. classes
Shadowing
Contrôler l’usage
Récursion terminale
Comprendre la Stack
Patterns de récursion terminale
Patterns fonctionnels
Mémorisation
Valeurs fonction mutables
Programmation paresseuse
Calcul
Expressions de calcul
Concevoir des expressions de calcul personnalisées
Programmation asynchrone et programmation parallèle
Travailler avec les threads
Utiliser la librairie de tâche parallèle (TPL)
Flux asynchrones
Programmation orientée agents
Réflexion
Attributs
Type de réflexion
Instanciation dynamique
Citations
Citations basiques
Générer des expressions de citation
Interopérabilité
Utiliser F# dans un projet C#
Bonnes pratiques