Partage via


Options interactives de F#

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

Utiliser F# Interactive pour l’écriture de scripts

F# Interactive, dotnet fsi, peut être lancé de manière interactive, ou il peut être lancé à partir de la ligne de commande pour exécuter un script. La syntaxe de 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 interactives F#

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’IDE Visual Studio. Pour définir ces options dans l’IDE Visual Studio, ouvrez le menu Outils, sélectionnez Options, développez le nœud F# Tools, puis sélectionnez F# Interactive.

Lorsque les listes apparaissent dans les arguments d’option interactive F#, 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 comme des arguments de ligne de commande au programme ou au script F#, que vous pouvez accéder dans le code à l’aide de la liste fsi. CommandLineArgs.
--checked[+|-] Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--checknulls[+|-] Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez les options du compilateur .
--codepage:<int> Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez Options du compilateur.
--consolecolors[+|-] Affiche des messages d’avertissement et d’erreur en couleur.
**--compilertool:<extensionsfolder> Référencer un assemblage ou un répertoire contenant un outil de conception (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 du compilateur fsc.exe. Pour plus d’informations, consultez Options du Compilateur.
--define:<string> Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--deterministic[+|-] Génère un assembly déterministe (y compris le GUID de version du module et l’horodatage).
--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 du compilateur fsc.exe. Pour plus d'informations, consultez Options du compilateur.
--gui[+|-] Active ou désactive la boucle d’événements Windows Forms. La valeur par défaut est activée.
--help

-?
Permet d’afficher la syntaxe de ligne de commande et une brève description de chaque option.
--lib :<liste-de-dossiers>

-I :<liste de dossiers>
Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez Options du Compilateur.
--load :<nom de fichier> Compile le code source donné au démarrage et charge les constructions F# compilées dans la session.
--mlcompatibility Identique à l’option du compilateur fsc.exe. Pour plus d'informations, consultez les Options du compilateur .
--noframework Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez Options du Compilateur
--nologo Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez les Options du compilateur .
--nowarn:<warning-list> Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez l’article Options du compilateur.
--optimize[+|-] Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez Options du compilateur.
--preferreduilang:<lang> Spécifie le nom de la culture de la langue de sortie par défaut (par exemple, es-ES, ja-JP).
--silence Supprime la sortie de F# Interactive vers le flux stdout.
--quotations-debug Spécifie que des informations de débogage supplémentaires doivent être émises pour les expressions qui sont dérivées des littérales de citation F# et des définitions réfléchies. Les informations de débogage sont ajoutées aux attributs personnalisés d’un nœud d’arborescence d’expressions F#. Voir Code Quotations et Expr.CustomAttributes.
--readline[+|-] Active ou désactive la complétion de tabulation en mode interactif.
--reference :<nom de fichier>

-r :<nom de fichier>
Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez les options du compilateur .
--tailcalls[+|-] Active ou désactive l'utilisation de l'instruction tail IL, qui entraîne la réutilisation de la trame de pile pour les fonctions récursives de queue. Cette option est activée par défaut.
--targetprofile:<string> Spécifie le profil du framework cible de cet assemblage. Les valeurs valides sont mscorlib, netcoreou 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 du compilateur fsc.exe. Pour plus d’informations, consultez Options du Compilateur.
--warn:<warning-level> Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez Options du compilateur.
--warnaserror[+|-] Identique à l’option du compilateur fsc.exe. Pour plus d’informations, consultez les options du compilateur .
--warnaserror[+|-]:<int-list> Identique à l’option du compilateur fsc.exe. Pour plus d'informations, consultez Options du compilateur.

Impression structurée F# Interactive

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

  1. Toutes les fonctionnalités de %A mise en forme de texte brut 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 en F# Les sorties interactives peuvent être personnalisées en utilisant 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, considérez 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, elle 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])

Cette sortie est la suivante :

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

Si la fonction 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"

Cette sortie est la suivante :

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