Bien démarrer avec F# dans Visual Studio Code

Vous pouvez écrire en 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 simplifiée avec IntelliSense et les refactorisations de code. Visitez Ionide.io pour en savoir plus sur le plug-in.

Pour commencer, vérifiez que F# et le plug-in Ionide sont correctement installés.

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 F# Explorateur de solutions doit s’ouvrir sur le côté gauche de votre fenêtre. 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 point dans le temps, mais une fois que cela se produit, le chargement est terminé.

Écrire votre premier script R

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

Ajoutez-y 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 (elle doit comporter 11 lignes). Une fois qu’elle est mise en surbrillance, maintenez la touche Alt enfoncée et appuyez sur Entrée. Vous remarquerez qu’une fenêtre de terminal s’affiche en bas de l’écran, et elle doit ressembler à ceci :

Example of F# Interactive output with Ionide

Cela a fait trois choses :

  1. Cela a démarré le processus FSI.
  2. Cela 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é.

Étant donné que ce que vous avez envoyé par-dessus était une fonction, vous pouvez maintenant appeler cette fonction avec FSI ! Dans la fenêtre interactive, tapez ce qui suit :

toPigLatin "banana";;

Le résultat suivant s’affiche :

val it: string = "ananabay"

Maintenant, essayons avec une voyelle comme première lettre. Entrez les informations suivantes :

toPigLatin "apple";;

Le résultat suivant s’affiche :

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 de l’évaluer avec FSI !

Notes

Comme vous l’avez peut-être remarqué, les lignes dans FSI se terminent par ;;. En effet, 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 réellement le code, voici un guide étape par étape.

Comme vous pouvez le voir, toPigLatin est une fonction qui prend un mot comme entrée et le 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 signifie que toPigLatin est une fonction qui prend un string en tant qu’entrée (appelé word) et retourne un autre string. C’est ce qu’on appelle la signature de type de la fonction, un élément fondamental de F# qui est essentiel pour comprendre le 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. Fonction interne, appelée isVowel, qui détermine si un caractère donné (c) est une voyelle en vérifiant s’il correspond à l’un des modèles fournis via les critères spéciaux :

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Une 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 selon 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 ainsi :

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

Il y a une dernière chose à noter à ce sujet : dans F#, il n’y a pas d’instruction explicite à retourner à partir 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 du 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 dans l’écriture de code F# : écrire une fonction initiale et l’exécuter de manière interactive avec FSI. C’est ce qu’on appelle le développement piloté par REPL, où REPL signifie « Read-Evaluate-Print Loop ». Il s’agit d’un excellent moyen d’expérimenter des fonctionnalités jusqu’à ce que quelque chose fonctionne.

L’étape suivante du développement piloté par REPL consiste à déplacer le 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 qu’il y a déjà du code.

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

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 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 de générateur 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 que cela 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 Ionide

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

  1. Pour obtenir les fonctionnalités d’édition 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é les 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 risque de ne pas fonctionner. Si c’est le cas, renommez vos répertoires de projet.
  4. Si aucune des commandes Ionide ne fonctionne, vérifiez vos liaisons de clé Visual Studio Code pour voir si vous les remplacez accidentellement.
  5. Si Ionide est endommagé sur votre ordinateur et qu’aucun des problèmes ci-dessus n’a été résolu, essayez de supprimer le répertoire ionide-fsharp sur votre ordinateur et réinstallez la suite de plug-ins.
  6. Si un projet n’a pas pu être chargé (l’Explorateur de solutions F# l’affiche), faites un clic 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 des membres de la communauté F#. Signalez les problèmes et n’hésitez pas à contribuer au référentiel GitHub ionide-vscode-fsharp.

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

Étapes suivantes

Pour en savoir plus sur F# et les fonctionnalités du langage, consultez la visite guidée de F#.