¿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

Leer-Evaluar-Imprimir-Bucle (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 13.9.201.0 for F# 9.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
    #help "idn";;                                 // Display documentation for an identifier, e.g. #help "List.map";;
    #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
    #clear;;                                      // Clear screen
    #quit;;                                       // Exit
    
F# Interactive command line options:

    See 'dotnet fsi --help' for options

Los ;; caracteres delimitan el final de una expresión. No se evalúa ningún código hasta que se introducen los caracteres ;;. Esta estructura es útil al escribir expresiones de varias líneas, ya que el código no está delimitado con nuevos caracteres de 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 la salida. En este caso, la salida del valor (val) en la consola es de tipo unit, que está representada por el () token y enlazada al it nombre. 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 de F#

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!