Options F# Interactive

Cet article décrit les options de ligne de commande prises en charge par F# Interactive, fsi.exe. F# Interactive accepte un grand nombre des mêmes options de ligne de commande que le compilateur F#, mais accepte également certaines options supplémentaires.

Utiliser F# Interactive pour les scripts

F# Interactive, dotnet fsi, peut être lancé de façon interactive ou à partir de la ligne de commande pour exécuter un script. La syntaxe de la ligne de commande est

dotnet fsi [options] [ script-file [arguments] ]

L’extension de fichier pour les fichiers de script F# est .fsx.

Tableau des options F# Interactive

Le tableau suivant récapitule les options prises en charge par F# Interactive. Vous pouvez définir ces options sur la ligne de commande ou via l’environnement IDE Visual Studio. Pour définir ces options dans l’environnement IDE Visual Studio, ouvrez le menu Outils, sélectionnez Options, développez le nœud Outils F#, puis sélectionnez F# Interactive.

Lorsque les listes apparaissent dans les arguments d’option F# Interactive, les éléments de liste sont séparés par des points-virgules (;).

Option Description
-- Utilisé pour indiquer à F# Interactive de traiter les arguments restants en tant qu’arguments de ligne de commande pour le programme ou le script F#, auxquels vous pouvez accéder dans le code à l’aide de la liste fsi.CommandLineArgs.
--checked[+|-] Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--codepage:<int> Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--consolecolors[+|-] Génère les messages d’avertissement et d’erreur en couleur.
**--compilertool:<extensionsfolder> Référence un assembly ou un répertoire contenant un outil design-time (forme courte : -t).
--crossoptimize[+|-] Activez ou désactivez les optimisations entre modules.
--debug[+|-]

--debug:[full|pdbonly|portable|embedded]

-g[+|-]

-g:[full|pdbonly|portable|embedded]
Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--define:<string> Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--deterministic[+|-] Produit un assembly déterministe (y compris le GUID de version du module et le timestamp).
--exec Indique à F# interactive de quitter après le chargement des fichiers ou l’exécution du fichier de script donné sur la ligne de commande.
--fullpaths Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--gui[+|-] Active ou désactive la boucle d’événements Windows Forms. Il est activé par défaut.
--help

-?
Utilisé pour afficher la syntaxe de ligne de commande et une courte description de chaque option.
--lib:<folder-list>

-I:<folder-list>
Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--load:<filename> Compile le code source donné au démarrage et charge les constructions F# compilées dans la session.
--mlcompatibility Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--noframework Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez Options du compilateur
--nologo Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--nowarn:<warning-list> Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--optimize[+|-] Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--preferreduilang:<lang> Spécifie le nom de culture du langage de sortie préféré (par exemple, es-ES, ja-JP).
--quiet Supprimez la sortie de F# Interactive dans le flux stdout.
--quotations-debug Spécifie que les informations de débogage supplémentaires doivent être émises pour les expressions dérivées de littéraux de quotations F# et les définitions reflétées. Les informations de débogage sont ajoutées aux attributs personnalisés d’un nœud d’arborescence de l’expression F#. Consultez Quotations de code et Expr.CustomAttributes.
--readline[+|-] Activez ou désactivez la saisie semi-automatique via la touche TAB en mode interactif.
--reference:<filename>

-r:<filename>
Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--tailcalls[+|-] Activez ou désactivez l’utilisation de l’instruction IL de fin, ce qui entraîne la réutilisation du frame de pile pour les fonctions récursives de fin. Cette option est activée par défaut.
--targetprofile:<string> Spécifie le profil de framework cible de cet assembly. Les valeurs valides sont mscorlib, netcore ou netstandard. La valeur par défaut est mscorlib.
--use:<filename> Indique à l’interpréteur d’utiliser le fichier donné au démarrage comme entrée initiale.
--utf8output Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--warn:<warning-level> Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--warnaserror[+|-] Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--warnaserror[+|-]:<int-list> Identique à l’option de compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.

Impression structurée en F# Interactive

F# Interactive (dotnet fsi) utilise une version étendue de la mise en forme structurée de texte brut pour signaler les valeurs.

  1. Toutes les fonctionnalités de mise en forme de texte brut %A sont prises en charge, et certaines sont également personnalisables.

  2. L’impression est colorisée si les couleurs sont prises en charge par la console de sortie.

  3. Une limite est placée sur la longueur des chaînes affichées, sauf si vous évaluez explicitement cette chaîne.

  4. Un ensemble de paramètres définissables par l’utilisateur est disponible via l’objet fsi.

Les paramètres disponibles pour personnaliser l’impression de texte brut pour les valeurs signalées sont les suivants :

open System.Globalization

fsi.FormatProvider <- CultureInfo("de-DE")  // control the default culture for primitives

fsi.PrintWidth <- 120        // Control the width used for structured printing

fsi.PrintDepth <- 10         // Control the maximum depth of nested printing

fsi.PrintLength <- 10        // Control the length of lists and arrays

fsi.PrintSize <- 100         // Control the maximum overall object count

fsi.ShowProperties <- false  // Control whether properties of .NET objects are shown by default

fsi.ShowIEnumerable <- false // Control whether sequence values are expanded by default

fsi.ShowDeclarationValues <- false // Control whether values are shown for declaration outputs

Personnaliser avec AddPrinter et AddPrintTransformer

L’impression dans les sorties F# Interactive peut être personnalisée à l’aide de fsi.AddPrinter et fsi.AddPrintTransformer. La première fonction donne du texte pour remplacer l’impression d’un objet. La deuxième fonction retourne un objet de substitution à afficher à la place. Par exemple, examinons le code F# suivant :

open System

fsi.AddPrinter<DateTime>(fun dt -> dt.ToString("s"))

type DateAndLabel =
    { Date: DateTime
      Label: string  }

let newYearsDay1999 =
    { Date = DateTime(1999, 1, 1)
      Label = "New Year" }

Si vous exécutez l’exemple dans F# Interactive, il est généré en fonction de l’option de mise en forme définie. Dans ce cas, cela affecte la mise en forme de la date et de l’heure :

type DateAndLabel =
  { Date: DateTime
    Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
                                       Label = "New Year" }

fsi.AddPrintTransformer peut être utilisé pour donner un objet de substitution pour l’impression :

type MyList(values: int list) =
    member _.Values = values

fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)

let x = MyList([1..10])

En voici la sortie :

val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

Si la fonction de transformateur passée à fsi.AddPrintTransformer retourne null, le transformateur d’impression est ignoré. Cela peut être utilisé pour filtrer n’importe quelle valeur d’entrée en commençant par le type obj. Par exemple :

fsi.AddPrintTransformer(fun (x:obj) ->
    match x with
    | :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
    | _ -> null)

let y = "beep"

En voici la sortie :

val y : string = ["quack"; "quack"; "quack"]
Intitulé Description
Options du compilateur Décrit les options de ligne de commande disponibles pour le compilateur F#, fsc.exe.