Novità di Visual F# 2010
F# è un linguaggio di programmazione multiparadigma per .NET Framework disponibile in Visual Studio 2010. F# supporta la programmazione funzionale, la programmazione orientata agli oggetti e la programmazione imperativa.
Funzionalità della versione di F# per Visual Studio 2010
Nelle sezioni seguenti vengono descritte alcune funzionalità disponibili nella prima versione di Visual F#.
Supporto per la programmazione funzionale
Le funzioni vengono trattate come valori e possono essere passate direttamente ad altre funzioni. Questa funzionalità agevola la codifica di funzioni di ordine superiore, ovvero funzioni che utilizzano altre funzioni. Viene pertanto semplificata la scrittura del codice dichiarativo, che tende a essere meno soggetto agli errori.
F# supporta la programmazione compositiva. È possibile comporre e chiamare funzioni in sequenza utilizzando una sintassi semplice degli operatori. È possibile combinare chiamate a funzioni utilizzando l'operatore pipeline, che consente di passare l'output o il valore restituito di una funzione come input a un'altra funzione. È inoltre possibile definire nuove funzioni combinando funzioni mediante l'operatore di composizione.
Per ulteriori informazioni, vedere Funzioni (F#).
Espressioni lambda
Le espressioni lambda consentono di definire le funzioni sul posto, senza dover assegnare un nome. Per ulteriori informazioni, vedere Espressioni lambda: parola chiave fun (F#).
Tipi di dati utili
F# fornisce tipi che supportano gli stili di programmazione funzionale, ad esempio tuple per insiemi semplici di dati e unioni discriminate per dati simbolici strutturati. Per ulteriori informazioni, vedere Tuple (F#), Unioni discriminate (F#) e Opzioni (F#).
Tipi di dati non modificabili
In F# sono disponibili strutture di dati non modificabili, ad esempio elenchi, mappe, set, sequenze e record. Per ulteriori informazioni, vedere Elenchi (F#), Sequenze (F#) e Record (F#).
Corrispondenza dei modelli
La funzionalità di corrispondenza dei modelli consente di scomporre i dati in parti costituenti ed eseguire operazioni di creazione di rami complesse basate sulla scomposizione dei dati. La corrispondenza dei modelli è estensibile. Per ulteriori informazioni, vedere Espressioni match (F#), Criteri di ricerca [F#] e Modelli attivi (F#).
Programmazione asincrona e parallela
F# supporta la programmazione asincrona e include costrutti che semplificano estremamente questo tipo di programmazione. Per ulteriori informazioni, vedere Flussi di lavoro asincroni (F#). È inoltre possibile utilizzare F# insieme alle estensioni parallele di .NET Framework. Con F# Power Pack, è anche possibile utilizzare Parallel LINQ (PLINQ) con F#. Per ulteriori informazioni, vedere Programmazione parallela in .NET Framework.
Programmazione interattiva
Visual F#include un interprete F#, F# Interactive (fsi.exe), che compila ed esegue il codice in modo interattivo. In questo modo risulta più agevole creare un prototipo del codice e tentare di codificare costrutti senza la necessità di compilare un progetto. F# Interactive è inoltre integrato nell'IDE di Visual Studio. Per ulteriori informazioni, vedere Riferimenti per F# Interactive (fsi.exe).
Calcoli ritardati
F# supporta il calcolo differito, che consente di rimandare un calcolo finché non è necessario un risultato. Per ulteriori informazioni, vedere Calcoli differiti (F#).
Supporto per la programmazione orientata a oggetti
F# supporta le funzionalità dei linguaggi orientati agli oggetti che consentono l'accesso completo a .NET Framework da parte dei programmi F#, nonché la creazione di interfacce API .NET Framework in F#. Per ulteriori informazioni, vedere Classi (F#), Membri (F#) e Ereditarietà (C#).
Supporto per la programmazione imperativa
F# supporta i costrutti di codice imperativi, ad esempio matrici e variabili modificabili, funzioni con effetti collaterali e costrutti di ciclo, per le situazioni in cui questo tipo di programmazione rappresenta il metodo migliore per risolvere un problema.
Supporto di calcoli matematici
F# supporta i calcoli matematici. Sono inclusi il supporto dell'overload degli operatori, gli operatori che utilizzano generics e un set completo di operatori matematici, tra cui un operatore di elevamento a potenza.
Le funzionalità di F# offrono inoltre il supporto per i dati a virgola mobile con unità di misura associate, per consentire la creazione di formule a virgola mobile con controllo dell'unità.
Sistema di tipi avanzato
F# supporta la programmazione generica. Per ulteriori informazioni, vedere Generics (F#).
F# è un linguaggio tipizzato in modo statistico, che supporta l'inferenza del tipo. Ciò significa che tutti gli elementi del programma dispongono di un tipo definito in fase di compilazione, per garantire l'indipendenza dai tipi, ma che non è necessario specificare i tipi di ogni valore in modo esplicito. Poiché il compilatore F# è in grado di derivare il tipo di un elemento del programma in molti casi senza che venga fornito un tipo esplicito, il codice è più compatto e alcuni errori di programmazione associati ai tipi non corrispondenti sono meno probabili. L'inferenza del tipo include inoltre la generalizzazione automatica, ovvero le funzioni che possono essere generiche vengono automaticamente compilate come tali. Per ulteriori informazioni, vedere Inferenza del tipo (F#).
Librerie utili
Visual F# include un set di librerie che forniscono supporto per il linguaggio di base, i tipi di insiemi, la reflection negli assembly F# e l'I/O formattato. F# consente inoltre di utilizzare le funzionalità complete di .NET Framework 4, ad esempio le estensioni parallele di .NET Framework e Windows Presentation Foundation. Per ulteriori informazioni, vedere .NET Framework 4.