Cos'è F# Interactive?

Completato

In alcuni casi non si vuole eseguire il processo di creazione, creazione di pacchetti e distribuzione di un'applicazione. F# Interactive è un ambiente di programmazione e scripting interattivo. Semplifica la trasformazione di un'idea in codice, consentendo di scrivere e valutare il codice in tempo reale tramite la console o i file di script autonomi.

Avvio di F# Interactive

F# Interactive è integrato in .NET SDK. È possibile avviarlo con il comando dotnet fsi dell'interfaccia della riga di comando di .NET.

dotnet fsi

Ciclo Read–Eval–Print (REPL)

Con l'avvio di F# Interactive viene avviata una sessione REPL (Read-Evaluate-Print-Loop) in cui è possibile scrivere il codice F# e valutarne immediatamente l'output nella console.

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

For help type #help;;

>

Eseguire e valutare le espressioni

Per valutare l'input, è necessario immetterlo dopo il carattere >.

> #help;;

Ad esempio, se si esegue il comando #help, l'output mostra il menu della Guida di F# Interactive.

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

La fine di un'espressione è delimitata dai caratteri ;;. Non viene valutato alcun codice fino a quando non vengono immessi i caratteri ;;. Questa struttura è utile quando si scrivono espressioni su più righe poiché il codice non è delimitato dai caratteri di nuova riga.

La valutazione del codice F# funziona allo stesso modo. Il codice seguente stampa un messaggio nella console.

> printfn "Hello World!";;

L'output valutato è:

Hello World!
val it : unit = ()

La prima riga visualizza l'output del codice valutato, mentre la seconda riga visualizza le informazioni sul tipo di output. In questo caso il valore restituito nella console è di tipo unit, rappresentato dal token () e associato al nome it. È possibile accedere al valore it in un secondo momento nel programma se si vogliono eseguire altre operazioni.

Uscita dal ciclo Read–Eval–Print

Dopo aver usato il ciclo Read–Eval–Print di F# Interactive, usare i comandi #q o #quit per uscire.

> #q;;

File di script con estensione fsx

Quando si scrive più codice, è possibile salvare il codice in uno script con l'estensione file fsx.

Se si usa lo stesso esempio di stampa di un messaggio nella console, è possibile creare un file denominato my-script.fsx in cui scrivere il codice.

printfn "Hello World!"

Osservare tuttavia che nei file con estensione fsx non è più necessario usare ;; alla fine delle espressioni. Ciò è dovuto al fatto che, nei file di script, F# Interactive è in grado di usare linee guida standard per la formattazione del codice F#, ad esempio il rientro e le nuove righe.

Anziché compilare il codice sorgente e quindi eseguire l'assembly compilato, è possibile eseguire dotnet fsi e specificare il nome del file di script contenente il codice F#. F# Interactive legge il codice e lo esegue in tempo reale.

dotnet fsi my-script.fsx

L'esecuzione di questo script produce l'output seguente.

Hello World!