Compartir a través de


Opciones de F# Interactive

En este artículo se describen las opciones de línea de comandos compatibles con F# Interactive, fsi.exe. F# Interactive acepta muchas de las mismas opciones de línea de comandos que el compilador de F#, pero también acepta algunas opciones adicionales.

Uso de F# Interactive para scripting

F# interactivo, dotnet fsi, se puede iniciar de forma interactiva o desde la línea de comandos para ejecutar un script. La sintaxis de línea de comandos es

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

La extensión de archivo para los archivos de script de F# es .fsx.

Tabla de opciones interactivas de F#

En la tabla siguiente se resumen las opciones admitidas por F# Interactive. Puede establecer estas opciones en la línea de comandos o a través del IDE de Visual Studio. Para establecer estas opciones en el IDE de Visual Studio, abra el menú Herramientas , seleccione Opciones, expanda el nodo Herramientas de F# y, a continuación, seleccione F# Interactive.

Donde aparecen listas en los argumentos de opción interactivos de F#, los elementos de lista están separados por punto y coma (;).

Opción Descripción
-- Se usa para indicar a F# Interactive que trate los argumentos restantes como argumentos de línea de comandos al programa o script de F#, al que puede acceder en el código mediante la lista fsi. CommandLineArgs.
--checked[+|-] Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--codepage:<int> Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--consolecolors[+|-] Advertencias de salida y mensajes de error en color.
**--compilertool:<extensionsfolder> Referencia a un ensamblado o directorio que contiene una herramienta de tiempo de diseño (forma corta: -t).
--crossoptimize[+|-] Habilitar o deshabilitar optimizaciones entre módulos.
--debug[+|-]

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

-g[+|-]

-g:[full|pdbonly|portable|embedded]
Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--define:<string> Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--deterministic[+|-] Genera un ensamblado determinista (con el GUID y la marca de tiempo de la versión del módulo).
--exec Indica a F# interactivo que salga después de cargar los archivos o ejecutar el archivo de script proporcionado en la línea de comandos.
--fullpaths Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--gui[+|-] Habilita o deshabilita el bucle de eventos Windows Forms. El valor predeterminado es habilitado.
--help

-?
Se usa para mostrar la sintaxis de la línea de comandos y una breve descripción de cada opción.
--lib:<folder-list>

-I:<folder-list>
Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--load:<filename> Compila el código fuente especificado en el inicio y carga las construcciones de F# compiladas en la sesión.
--mlcompatibility Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--noframework Igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador
--nologo Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--nowarn:<warning-list> Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--optimize[+|-] Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--preferreduilang:<lang> Especifica el nombre de la referencia cultural del idioma de salida preferido (por ejemplo, es-ES, ja-JP).
--quiet Suprima la salida de F# Interactive en el flujo stdout.
--quotations-debug Especifica que se debe emitir información adicional de depuración para expresiones derivadas de literales de expresiones delimitadas de F# y definiciones reflejadas. La información de depuración se agrega a los atributos personalizados de un nodo del árbol de expresión de F#. Vea Expresiones de código delimitadas y Expr.CustomAttributes.
--readline[+|-] Habilite o deshabilite la finalización de tabulación en modo interactivo.
--reference:<filename>

-r:<filename>
Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--tailcalls[+|-] Habilita o deshabilita el uso de la instrucción IL de cola, lo que hace que el marco de pila se reutilice en las funciones recursivas de cola. Esta opción está habilitada de forma predeterminada.
--targetprofile:<string> Especifica el perfil de marco de destino de este ensamblado. Los valores válidos son mscorlib, netcore o netstandard. El valor predeterminado es mscorlib.
--use:<filename> Indica al intérprete que use el archivo especificado al iniciarse como entrada inicial.
--utf8output Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--warn:<warning-level> Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--warnaserror[+|-] Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.
--warnaserror[+|-]:<int-list> Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador.

Impresión estructurada de F# interactivo

F# Interactive (dotnet fsi) usa una versión extendida de formato de texto sin formato estructurado para informar de los valores.

  1. Se admiten todas las características del formato de texto sin formato %A y algunas también se pueden personalizar.

  2. La impresión se colorea si la consola de salida admite colores.

  3. Un límite se coloca en la longitud de las cadenas que se muestran, a menos que evalúe explícitamente esa cadena.

  4. Hay disponible un conjunto de configuraciones definibles por el usuario a través del objeto fsi.

La configuración disponible para personalizar la impresión de texto sin formato para los valores notificados son:

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

Personalización con AddPrinter y AddPrintTransformer

La impresión en salidas interactivas de F# se puede personalizar mediante fsi.AddPrinter y fsi.AddPrintTransformer. La primera función proporciona texto para reemplazar la impresión de un objeto. La segunda función devuelve un objeto suplente que se va a mostrar en su lugar. Por ejemplo, considere el siguiente código F#:

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 ejecuta el ejemplo en F# Interactive, se genera en función del conjunto de opciones de formato. En este caso, afecta al formato de fecha y hora:

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

fsi.AddPrintTransformer se puede usar para proporcionar un objeto suplente para imprimir:

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

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

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

Esta es la salida:

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

Si la función de transformador pasada a fsi.AddPrintTransformer devuelve null, se omite el transformador de impresión. Esto se puede usar para filtrar cualquier valor de entrada empezando por el tipo obj. Por ejemplo:

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

let y = "beep"

Esta es la salida:

val y : string = ["quack"; "quack"; "quack"]
Title Descripción
Opciones del compilador Describe las opciones de línea de comandos disponibles para el compilador de F#, fsc.exe.