Cos'è F# Interactive?
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!