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
  • Points clés
  • Historique
  • Éditeurs / IDE
  • Setup du poste
  • F♯ interactive (FSI)
  • Types de fichier
  • Fichier standalone
  • Fichiers de projet
  • Projet F♯

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

Modifier sur GitHub
  1. Bases

Le F♯, c'est quoi ?

Points clés

Famille des langages Microsoft - Plateforme .NET

  • Son concepteur : Don Syme @ Microsoft Research

  • ≃ Implémentation de OCaml pour .NET

  • ≃ Inspirée par Haskell (Version 1.0 en 1990)

  • dotnet new -lang F#

  • Inter-opérabilité entre projets/assemblies C♯ et F♯

Langage multi-paradigme Functional-first et très concis

Là où C♯ est imperative/object-oriented-first et plutôt verbeux (même s’il s'inspire de F♯ pour être + succinct)

Historique

Date
C♯
F♯
.NET
Visual Studio

2002

C♯ 1.0

.NET Framework 1.0

VS .NET 2002

2005

F♯ 1.x

.NET Framework 1.0

VS 2005 ?

2010

C♯ 4.0

F♯ 2.0

.NET Framework 4

VS 2010

2015

C♯ 6.0

F♯ 4.0

.NET Framework 4.6, .NET Core 1.x

VS 2015

2018

C♯ 7.3

F♯ 4.5

.NET Framework 4.8, .NET Core 2.x

VS 2017

2019

C♯ 8.0

F♯ 4.7

.NET Core 3.x

VS 2019

2020

C♯ 9.0

F♯ 5.0

.NET 5.0

VS 2019

2021

C♯ 10.0

F♯ 6.0

.NET 6.0 (LTS)

...

...

...

...

2024

C♯ 13.0

F♯ 9.0

.NET 9.0

Éditeurs / IDE

  • Visual Studio / Rider → ☝ Moins de refacto que pour C♯

Setup du poste

  • Installation du SDK .NET (5.0 ou 6.0)

  • Installation de VScode

  • Ajout de l'extension Ionide-fsharp

F♯ interactive (FSI)

  • REPL disponible dans VS, Rider, vscode + dotnet fsi

  • Usage : vérifier en live un bout de code

    • 💡 Terminer expression par ;; pour l'évaluer

  • Existe depuis le départ (cf. aspect scripting du F#)

    • C♯ interactive + récent (VS 2015 Update 1)

Types de fichier

4 types de fichier : .fs, .fsi, .fsx, .fsproj

  • Mono langage : purement pour/en F♯

  • Standalone vs Projet

Fichier standalone

  • Fichier de script .fsx

    • Exécutable (d'où le x) dans la console FSI

    • Indépendant mais peut référencer autre fichier, DLL, package NuGet.

Fichiers de projet

  • En C♯ : .sln contient .csproj qui contient .cs

  • En F♯ : .sln contient .fsproj qui contient .fs et .fsi

    • Fichier projet .fsproj

    • Fichier de code .fs

    • Fichier de signature .fsi (i comme interface)

      • Associé à un fichier .fs de même nom

      • Renforcer encapsulation (idem .h en C)

      • Séparer longue documentation (xml-doc)

💡 Interop C♯ - F♯ = Il est facile de faire cohabiter et inter-référencer des projets.csproj et .fsproj dans une .sln

Projet F♯

Création dans un IDE ou avec la CLI dotnet :

  • dotnet new -l : lister les types de projet supportés

  • dotnet new console --language F# -o MyFSharpApp

    • Création d'un projet console nommé MyFSharpApp

    • --language F# à spécifier ; sinon C#

  • dotnet build : builder le projet

  • dotnet run : builder le projet et lancer l'exécutable résultant

PrécédentIntroSuivantSyntaxe

Dernière mise à jour il y a 2 mois

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

🔗 Détails de chaque version :

VsCode + → ☝ Moins d'aide (autocompletion, ajout d'imports, ...) qu'un IDE → ☝ Permissif : ne remonte pas toujours toutes les erreurs de compilation

→ Online avec exemples

(Optionnel) extensions complémentaires :

Alternative :

Optionnel et plutôt rare -- + d'info :

https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/
Ionide
https://docs.microsoft.com/en-us/learn/modules/fsharp-first-steps/ 4-set-up-development-environment-exercise
LINQPad
MSDN
Interop avec la TPL .NET
REPL
https://try.fsharp.org/
https://www.compositional-it.com/news-blog/fantastic-f-and-azure-developer-extensions-for-vscode/