¿Qué es F# interactivo?

Completado

Es posible que a veces no quiera pasar por el proceso de creación, empaquetado y distribución de una aplicación. F# interactivo es un entorno interactivo de programación y creación de scripts. Facilita el paso de la idea al código, ya que permite escribir y evaluar código en tiempo real mediante la consola o archivos de script independientes.

Inicio de F# interactivo

F# interactivo está integrado en el SDK de .NET. Puede iniciarlo con el comando dotnet fsi de la CLI de .NET.

dotnet fsi

Read-Evaluate-Print-Loop (REPL)

Al iniciar F# interactivo se inicia una sesión de read-evaluate-print-loop (REPL) donde puede escribir el código de F# y evaluar inmediatamente su salida en la consola.

Microsoft (R) F# Interactive version 11.4.2.0 for F# 5.0 
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

>

Ejecución y evaluación de expresiones

Para evaluar la entrada, debe escribirla después del carácter >.

> #help;;

Por ejemplo, si ejecuta el comando #help, la salida muestra el menú de ayuda de F# interactivo.

F# Interactive directives:

    #r "file.dll";;                               // Reference (dynamically load) the given DLL
    #i "package source uri";;                     // Include package source uri when searching for packages
    #I "path";;                                   // Add the given search path for referenced DLLs
    #load "file.fs" ...;;                         // Load the given file(s) as if compiled and referenced
    #time ["on"|"off"];;                          // Toggle timing on/off
    #help;;                                       // Display help
    #r "nuget:FSharp.Data, 3.1.2";;               // Load Nuget Package 'FSharp.Data' version '3.1.2'
    #r "nuget:FSharp.Data";;                      // Load Nuget Package 'FSharp.Data' with the highest version
    #quit;;                                       // Exit
    
F# Interactive command line options:

    See 'dotnet fsi --help' for options

El final de una expresión está delimitado por los caracteres ;;. No se evalúa ningún código hasta que se introducen los caracteres ;;. Esta estructura resulta útil al escribir expresiones de varias líneas, ya que el código no está delimitado por caracteres de nueva línea.

La evaluación del código de F# funciona de la misma manera. El código siguiente imprime un mensaje en la consola.

> printfn "Hello World!";;

La salida evaluada es:

Hello World!
val it : unit = ()

La primera línea muestra la salida del código evaluado, mientras que la segunda línea muestra la información de tipo de salida. En este caso, el valor que se genera en la consola es de tipo unit, que se representa mediante el token () y se enlaza al nombre it. Puede acceder al valor it más adelante en el programa si desea realizar más operaciones.

Salir de REPL

Cuando haya terminado de usar el REPL de F# interactivo, utilice los comandos #q o #quit para salir.

> #q;;

Archivos de script FSX

A medida que escribe más código, puede guardar el código en un script con la extensión de archivo fsx.

Si usa el mismo ejemplo de impresión de un mensaje en la consola, puede crear un archivo llamado my-script.fsx donde escribir el código.

printfn "Hello World!"

Sin embargo, hay que tener en cuenta que, en los archivos fsx, no es necesario usar ;; al final de las expresiones. El motivo es que, en los archivos de script, F# interactivo puede usar directrices estándar de formato de código de F# como sangría y nuevas líneas.

En lugar de compilar el código fuente y luego ejecutar el ensamblado compilado, se puede ejecutar simplemente dotnet fsi y especificar el nombre de archivo del script que contiene el código de F#, y F# interactivo lee el código y lo ejecuta en tiempo real.

dotnet fsi my-script.fsx

La ejecución de este script genera la siguiente salida.

Hello World!