Formation F#
  • Intro
  • Bases
    • Le F♯, c'est quoi ?
    • Syntaxe
    • Premiers concepts
    • 🍔 Quiz
  • Fonctions
    • Signature
    • Fonctions
    • Fonctions standard
    • OpĂ©rateurs
    • Fonctions : complĂ©ments
    • 🍔 Quiz
    • 📜 RĂ©cap’
  • Types composites
    • GĂ©nĂ©ralitĂ©s
    • Tuples
    • Records
    • Unions
    • Enums
    • Records anonymes
    • Types valeur
    • 🍔 Quiz
  • Types : ComplĂ©ments
    • Type unit
    • GĂ©nĂ©riques
    • Types flexibles
    • UnitĂ©s de mesure
    • Conversion
    • Exceptions F#
  • Pattern matching
    • Patterns
    • Match expression
    • 🚀 Active Patterns
    • 📜 RĂ©cap’
  • Collections
    • Vue d'ensemble
    • Types
    • Fonctions gĂ©nĂ©riques
    • Fonctions spĂ©cifiques
    • 🍔 Quiz
    • 📜 RĂ©cap’
  • Programmation asynchrone
    • Workflow asynchrone
    • Interop avec la TPL .NET
    • 📜 RĂ©cap’
  • Types monadiques
    • Type Option
    • Type Result
    • Smart constructor
    • 🚀 Computation expression (CE)
    • 🚀 CE - Fondements thĂ©oriques
    • 📜 RĂ©cap’
  • Module & namespace
    • Vue d'ensemble
    • Namespace
    • Module
    • 🍔 Quiz
    • 📜 RĂ©cap’
  • OrientĂ©-objet
    • Introduction
    • Membres
    • Extensions de type
    • Classe, structure
    • Interface
    • Expression objet
    • Recommandations
  • 🦚 Aller plus loin
Propulsé par GitBook
Sur cette page
  • Types Option et Result
  • Computation expression (CE)
  • Ressources complĂ©mentaires đź”—

Cet article vous a-t-il été utile ?

Modifier sur GitHub
  1. Types monadiques

📜 Récap’

Types Option et Result

  • Types union avec 2 cases respectifs

    • Option<'T> : Some<'T> et None

    • Result<'T, 'E> : Ok<'T> et Error<'E>

  • A quoi ils servent :

    • ModĂ©liser absence de valeur et erreurs mĂ©tier

    • OpĂ©rations partielles rendues totales tryXxx

      • Smart constructor tryCreate

  • Comment on s'en sert :

    • ChaĂ®nage : map, bind, filter → ROP

    • Pattern matching

  • Leurs bĂ©nĂ©fices :

    • null free, Exception free → pas de guard polluant code

    • Rend logique mĂ©tier et happy path + lisible

Computation expression (CE)

  • Sucre syntaxique : syntaxe intĂ©rieure standard ou "bangĂ©e" (let!)

  • Separation of Concerns : logique mĂ©tier vs « machinerie »

  • Compilateur fait lien avec builder

    • Objet stockant un Ă©tat

    • Build une valeur en sortie, d'un type spĂ©cifique

  • Imbricables mais pas faciles Ă  combiner !

  • Concepts thĂ©oriques sous-jacents

    • MonoĂŻde → seq (d'Ă©lĂ©ments composables et avec un "zĂ©ro")

    • Monade → async, option, result

    • Applicative → validation/Result<'T, 'Err list>

  • Librairies NuGet : FSharpPlus, FsToolkit, Expecto, Farmer, Saturn

Ressources complémentaires 🔗

Compositional IT (Isaac Abraham)

F# for Fun and Profit (Scott Wlaschin)

Précédent🚀 CE - Fondements théoriquesSuivantVue d'ensemble

Dernière mise à jour il y a 2 ans

Cet article vous a-t-il été utile ?

, Jul 2020

, Jun 2012

, Jan 2013

, Jan 2013

, Aug 2015

Writing more succinct C# – in F#! (Part 2)
The Option type
Making illegal states unrepresentable
Série de 11 articles sur les CE
Série de 7 articles sur monades 'n co