Partager via


Commencer avec F# dans Visual Studio Code

Vous pouvez écrire F# dans Visual Studio Code avec le plug-in Ionide pour bénéficier d’une expérience d’environnement de développement intégré (IDE) multiplateforme et légère avec IntelliSense et les refactorisations de code. Visitez Ionide.io pour en savoir plus sur le plug-in.

Remarque

Avant de commencer, vérifiez que vous avez installé F# et le plug-in Ionide.

Créer votre premier projet avec Ionide

Pour créer un projet F#, ouvrez une ligne de commande et créez un projet avec l’interface CLI .NET :

dotnet new console -lang "F#" -o FirstIonideProject

Une fois l’opération terminée, remplacez le répertoire par le projet et ouvrez Visual Studio Code :

cd FirstIonideProject
code .

Une fois le projet chargé dans Visual Studio Code, le volet Explorateur de solutions F# doit s’afficher sur le côté gauche de votre fenêtre ouverte. Cela signifie que Ionide a correctement chargé le projet que vous venez de créer. Vous pouvez écrire du code dans l’éditeur avant ce moment, mais une fois que cela se produit, tout a fini de se charger.

Écrire votre premier script

Une fois que vous avez configuré Visual Studio Code pour utiliser des scripts .NET Core, accédez à l’affichage Explorateur dans Visual Studio Code et créez un fichier. Nommez-le MyFirstScript.fsx.

Ajoutez maintenant le code suivant :

let toPigLatin (word: string) =
    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"

Cette fonction convertit un mot en une forme de Pig Latin. L’étape suivante consiste à l’évaluer à l’aide de F# Interactive (FSI).

Mettez en surbrillance la fonction entière (il doit s’agir de 11 lignes de long). Une fois mise en surbrillance, maintenez la touche Alt enfoncée, puis appuyez sur Entrée. Vous remarquerez qu’une fenêtre de terminal apparaît en bas de l’écran et qu’elle doit ressembler à ceci :

Exemple de sortie interactive F# avec Ionide

Cela a fait trois choses :

  1. Il a démarré le processus FSI.
  2. Il a envoyé le code que vous avez mis en surbrillance au processus FSI.
  3. Le processus FSI a évalué le code que vous avez envoyé.

Parce que ce que vous avez envoyé était une fonction , vous pouvez maintenant appeler cette fonction avec FSI ! Dans la fenêtre interactive, tapez ce qui suit :

toPigLatin "banana";;

Vous devez voir le résultat suivant :

val it: string = "ananabay"

Maintenant, essayons avec une voyelle comme première lettre. Entrez les éléments suivants :

toPigLatin "apple";;

Vous devez voir le résultat suivant :

val it: string = "appleyay"

La fonction semble fonctionner comme prévu. Félicitations, vous venez d’écrire votre première fonction F# dans Visual Studio Code et l’avez évaluée avec FSI !

Remarque

Comme vous l’avez peut-être remarqué, les lignes dans le FSI sont terminées par ;;. Cela est dû au fait que FSI vous permet d’entrer plusieurs lignes. Le ;; à la fin permet à FSI de savoir quand le code est terminé.

Explication du code

Si vous n’êtes pas sûr de ce que fait le code, voici un pas à pas.

Comme vous pouvez le voir, toPigLatin est une fonction qui prend un mot comme entrée et la convertit en une représentation Pig-Latin de ce mot. Les règles sont les suivantes :

Si le premier caractère d’un mot commence par une voyelle, ajoutez « yay » à la fin du mot. S’il ne commence pas par une voyelle, déplacez ce premier caractère à la fin du mot et ajoutez « ay » à celui-ci.

Vous avez peut-être remarqué ce qui suit dans FSI :

val toPigLatin: word: string -> string

Cela indique que toPigLatin est une fonction qui prend un string en tant qu’entrée (appelée word), et retourne une autre string. Il s’agit de la signature de type de la fonction, élément fondamental de F# qui est la clé de compréhension du code F#. Vous remarquerez également cela si vous pointez sur la fonction dans Visual Studio Code.

Dans le corps de la fonction, vous remarquerez deux parties distinctes :

  1. Une fonction interne, appelée isVowel, qui détermine si un caractère donné (c) est une voyelle en vérifiant si elle correspond à l’un des modèles fournis via modèle correspondant:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Expression if..then..else qui vérifie si le premier caractère est une voyelle et construit une valeur de retour à partir des caractères d’entrée en fonction du fait que le premier caractère était une voyelle ou non :

    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"
    

Le flux de toPigLatin est donc :

Vérifiez si le premier caractère du mot d’entrée est une voyelle. Si c’est le cas, attachez « yay » à la fin du mot. Sinon, déplacez ce premier caractère à la fin du mot et ajoutez « ay » à celui-ci.

Il y a une dernière chose à noter à ce sujet : en F#, il n’y a pas d’instruction explicite à retourner de la fonction. Cela est dû au fait que F# est basé sur une expression et que la dernière expression évaluée dans le corps d’une fonction détermine la valeur de retour de cette fonction. Étant donné que if..then..else est lui-même une expression, l’évaluation du corps du bloc then ou le corps du bloc else détermine la valeur retournée par la fonction toPigLatin.

Transformer l’application console en générateur Pig Latin

Les sections précédentes de cet article ont montré une première étape courante de l’écriture de code F# : écriture d’une fonction initiale et exécution interactive avec FSI. Il s’agit du développement basé sur REPL, où REPL signifie « Read-Evaluate-Print Loop ». C’est un excellent moyen d’expérimenter des fonctionnalités jusqu’à ce que vous ayez quelque chose de opérationnel.

L’étape suivante du développement basé sur REPL consiste à déplacer du code de travail dans un fichier d’implémentation F#. Il peut ensuite être compilé par le compilateur F# dans un assembly qui peut être exécuté.

Pour commencer, ouvrez le fichier Program.fs que vous avez créé précédemment avec l’interface CLI .NET. Vous remarquerez que du code est déjà présent.

Ensuite, créez une module appelée PigLatin et copiez la fonction toPigLatin que vous avez créée précédemment dans celle-ci :

module PigLatin =
    let toPigLatin (word: string) =
        let isVowel (c: char) =
            match c with
            | 'a' | 'e' | 'i' | 'o' | 'u'
            | 'A' | 'E' | 'I' | 'O' | 'U' -> true
            |_ -> false
        
        if isVowel word[0] then
            word + "yay"
        else
            word[1..] + string word[0] + "ay"

Ce module doit être au-dessus de la fonction main et sous la déclaration de open System. L’ordre des déclarations est important en F#. Vous devez donc définir la fonction avant de l’appeler dans un fichier.

Maintenant, dans la fonction main, appelez votre fonction génératrice de Pig Latin sur les arguments :

[<EntryPoint>]
let main args =
    for arg in args do
        let newArg = PigLatin.toPigLatin arg
        printfn "%s in Pig Latin is: %s" arg newArg

    0

Vous pouvez maintenant exécuter votre application console à partir de la ligne de commande :

dotnet run apple banana

Et vous verrez qu’il génère le même résultat que votre fichier de script, mais cette fois en tant que programme en cours d’exécution !

Résolution des problèmes d’Ionide

Voici quelques façons de résoudre certains problèmes que vous pouvez rencontrer :

  1. Pour obtenir les fonctionnalités de modification de code d’Ionide, vos fichiers F# doivent être enregistrés sur le disque et à l’intérieur d’un dossier ouvert dans l’espace de travail Visual Studio Code.
  2. Si vous avez apporté des modifications à votre système ou installé des prérequis Ionide avec Visual Studio Code ouvert, redémarrez Visual Studio Code.
  3. Si vous avez des caractères non valides dans vos répertoires de projet, Ionide peut ne pas fonctionner. Renommez vos répertoires de projet si c’est le cas.
  4. Si aucune des commandes Ionide ne fonctionne, vérifiez vos raccourcis clavier Visual Studio Code pour voir si vous les avez remplacés par accident.
  5. Si Ionide est rompu sur votre ordinateur et qu’aucun des problèmes ci-dessus n’a résolu votre problème, essayez de supprimer le répertoire ionide-fsharp sur votre ordinateur et de réinstaller la suite de plug-ins.
  6. Si un projet n’a pas pu être chargé (l’Explorateur de solutions F# l’affiche), cliquez avec le bouton droit sur ce projet, puis cliquez sur Afficher les détails pour obtenir plus d’informations de diagnostic.

Ionide est un projet open source créé et géré par les membres de la communauté F#. Signalez les problèmes et n’hésitez pas à contribuer au dépôt GitHub ionide-vscode-fsharp.

Vous pouvez également demander de l’aide supplémentaire aux développeurs Ionide et de la communauté F# dans le canal Ionide Gitter.

Étapes suivantes

Pour en savoir plus sur F# et les fonctionnalités de la langue, consultez Visite guidée de F#.