Referencia de F# Interactive (fsi.exe)

F# Interactive (fsi.exe) se utiliza para ejecutar código de F# de manera interactiva en la consola o para ejecutar scripts de F#. En otras palabras, F# Interactive ejecuta un bucle REPL (del inglés Read, Evaluate, Print Loop - bucle Leer, Evaluar, Imprimir) para el lenguaje F#.

Programación interactiva con F#

F# Interactive se puede utilizar para escribir código en la consola o en una ventana de Visual Studio.

Para usar F# Interactive desde la consola, ejecute fsi.exe. Para obtener más información acerca de las opciones de línea de comandos disponibles, vea Opciones de F# Interactive.

Para ejecutar F# Interactive a través de Visual Studio 2010, puede hacer clic en el botón F# Interactive de la barra de herramientas o presionar las teclas Ctrl+Alt+F. De este modo, se abrirá la ventana interactiva, que es una ventana de herramientas en la que se ejecuta una sesión de F# Interactive. Asimismo, puede seleccionar el código que desea ejecutar en la ventana interactiva y presionar la combinación de teclas ALT+ENTRAR. F# Interactive se inicia en la ventana de herramientas F# Interactive.

Tanto si usa la consola como si usa Visual Studio 2010, aparece un símbolo del sistema y el intérprete espera una entrada por parte del usuario. Puede escribir código tal y como lo haría en un archivo de código fuente. Para compilar y ejecutar el código, escriba dos signos de punto y coma (;;) para finalizar una o varias líneas de entrada.

F# Interactive intenta compilar el código y, si lo logra, lo ejecuta e imprime en pantalla la signatura de los tipos y valores que compiló. Si se producen errores, el intérprete imprime en pantalla los mensajes de error.

El código escrito en una misma sesión tiene acceso a cualquier construcción escrita anteriormente, de modo que es posible crear programas. Un búfer extenso de la ventana de herramientas permite copiar el código en un archivo si es necesario.

Cuando F# Interactive se ejecuta en Visual Studio, lo hace de manera independiente del proyecto, de modo que, por ejemplo, no se pueden usar en F# Interactive las construcciones definidas en el proyecto a menos que se copie el código de dichas funciones en la ventana interactiva.

Puede controlar los argumentos (opciones) de la línea de comandos de F# Interactive ajustando la configuración. En el menú Herramientas, seleccione Opciones... y, a continuación, expanda Herramientas de F#. Las dos configuraciones que puede cambiar son las opciones de F# Interactive y la ruta de acceso al archivo ejecutable fsi.exe, que puede usar si tiene una versión de fsi.exe diferente a la versión de F# que desea ejecutar.

Scripting con F#

Los scripts tienen la extensión de archivo .fsx o .fsscript. En lugar de compilar el código fuente y ejecutar a continuación el ensamblado compilado, se puede ejecutar simplemente fsi.exe y especificar el nombre de archivo del script de código fuente en F#. F# Interactive lee el código y lo ejecuta en tiempo real.

Diferencias entre los entornos interactivo, compilado y de scripting

Al compilar código en F# Interactive, tanto si se ejecuta de forma interactiva como si ejecuta un script, se define el símbolo INTERACTIVE. Al compilar código en el compilador, se define el símbolo COMPILED. Por consiguiente, si el código debe ser diferente en modo interactivo y en modo compilado, se pueden usar las directivas de preprocesador de la compilación condicional para determinar cuál se va a usar.

Cuando se ejecutan scripts en F# Interactive, están disponibles algunas directivas que no están disponibles cuando se ejecuta el compilador. En la siguiente tabla se resumen las directivas que están disponibles cuando se usa F# Interactive.

Directiva

Descripción

#help

Muestra información sobre las directivas disponibles.

#I

Especifica una ruta de búsqueda de ensamblado entre comillas.

#load

Lee un archivo de código fuente, lo compila y lo ejecuta.

#quit

Termina una sesión de F# Interactive.

#r

Hace referencia a un ensamblado.

#time ["on"|"off"]

Por sí solo, #time activa y desactiva la presentación de información sobre el rendimiento. Cuando está habilitado, F# Interactive mide el tiempo real, el tiempo de CPU y la información sobre recolección de elementos no utilizados que se interpreta y ejecuta.

Al especificar los archivos o rutas de acceso en F# Interactive, se espera un literal de cadena. Por tanto, los archivos y las rutas de acceso deben estar entre comillas y se aplicarán los caracteres de escape habituales. Asimismo, puede usar el carácter @ para hacer que F# Interactive interprete una cadena que contenga una ruta de acceso como una cadena textual. Esto hace que F# Interactive pase por alto cualquier carácter de escape.

Una de las diferencias entre el modo compilado y el modo interactivo es la manera en que se obtiene acceso a los argumentos de la línea de comandos. En modo compilado, se utiliza GetCommandLineArgs. En scripts, se utiliza fsi.CommandLineArgs.

En el código siguiente se muestra cómo crear una función que lea los argumentos de la línea de comandos en un script y cómo hacer referencia a otro ensamblado desde un script. El primer archivo de código, MyAssembly.fs, contiene el código del ensamblado al que se hace referencia. Compile este archivo con la línea de comandos fsc -a MyAssembly.fs y, a continuación, ejecute el segundo archivo como un script con la línea de comandos fsi --exec file1.fsx test

// MyAssembly.fs
module MyAssembly
let myFunction x y = x + 2 * y

// file1.fsx
#r "MyAssembly.dll"

printfn "Command line arguments: "

for arg in fsi.CommandLineArgs do
    printfn "%s" arg

printfn "%A" (MyAssembly.myFunction 10 40)

La salida es la siguiente:

file1.fsx
test
60

Temas relacionados

Título

Descripción

Opciones de F# Interactive

Describe la sintaxis y las opciones de línea de comandos de F# Interactive, fsi.exe.

Referencia de la biblioteca interactiva de F#

Describe la funcionalidad de bibliotecas que está disponible cuando se ejecuta código en F# Interactive.

Historial de cambios

Fecha

Historial

Motivo

Octubre de 2010

Se ha agregado la tabla de directivas admitidas.

Mejora de la información.