githubModifier

📜 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, filterROP

    • 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)

Mis à jour