Domanda

Ad esempio, in Java c'è Java funzionale E Java di ordine superiore.Entrambi forniscono essenzialmente una piccola API per manipolare funzioni di ordine superiore e forse alcuni nuovi tipi di dati (tuple, elenchi immutabili).

È stato utile?

Soluzione

hai esaminato? F#?

Sarebbe anche un bel post sul blog Qui che parla di come utilizzare le nuove espressioni generiche/lambda integrate in C# 3.0.

Se aggiungi semplicemente l'utilizzo di System.Linq all'inizio del tuo file sorgente, ci sono MOLTE nuove funzioni interessanti aggiunte per lavorare con le raccolte come piegatura/filtro/ecc.

Altri suggerimenti

Sembra LanguageExt molto promettente per rendere più semplice la programmazione in stile funzionale in C#.

https://github.com/louthy/lingual-ext

Supponendo che non sia possibile utilizzare F# per qualsiasi motivo e si desideri semplicemente utilizzare paradigmi e modi di dire funzionali nel codice C# per migliorare la qualità e l'affidabilità:

Corrispondenza dei modelli di stile funzionale per C#

Libreria Monad per C#/.Net

C'è anche 'elevare' che ha alcune cose funzionali come i tipi di opzioni (forse) ecc.

Penso che tu voglia F#

Inoltre, le versioni più recenti di C# hanno molti concetti funzionali inclusi nel linguaggio di base.

Potrebbe esistere una libreria di questo tipo per C#, ma probabilmente dovresti considerare di usare solo F# http://research.microsoft.com/fsharp/fsharp.aspx E http://msdn.microsoft.com/en-us/fsharp/default.aspx.

Microsoft prevede di rendere F# un linguaggio di prima classe in Visual Studio, quindi dovrebbero esserci pochi rischi nell'utilizzo di uno dei CTP per creare il materiale iniziale.

Se stai cercando qualcosa che estenda C# allora no, ma c'è F# che è un linguaggio funzionale basato su .NET.Da "Informazioni su F#" pagina:

F# è un linguaggio di programmazione funzionale tipizzato per .NET Framework.Combina la concisione, l'espressività e la composizionalità della programmazione funzionale tipizzata con il supporto runtime, le librerie, l'interoperabilità, gli strumenti e il modello a oggetti di .NET.F# deriva dalla famiglia di linguaggi ML e ha un linguaggio di base compatibile con quello di OCaml, sebbene attinga anche da C# e Haskell.F# è stato progettato da zero per essere un cittadino di prima classe su .NET, offrendo un'interoperabilità fluida con altri linguaggi .NET.Ad esempio, C# e F# possono chiamarsi direttamente a vicenda.Ciò significa che F# ha accesso immediato a tutte le API .NET Framework, inclusi, ad esempio, Windows Presentation Foundation e DirectX.Allo stesso modo, le librerie sviluppate in F# possono essere usate da altri linguaggi .NET.

Poiché F# e OCaml condividono un linguaggio di base simile, alcune librerie e applicazioni OCaml possono eseguire la compilazione incrociata direttamente o con piccole modifiche compilate in modo condizionale.Ciò fornisce un percorso per la compilazione incrociata e/o il porting del codice OCaml esistente su .NET e consente inoltre ai programmatori di trasferire competenze tra questi linguaggi.Uno degli obiettivi principali del progetto è stato quello di estendere la portata dei linguaggi simili a OCaml in ambiti in cui non sono stati tradizionalmente utilizzati.Durante tutto il progetto i designer di F# sono grati per il supporto e l'incoraggiamento di Xavier Leroy e di altri membri della comunità OCaml.

Di per sé non è una libreria termoretraibile, ma Luca Bolognese di Microsoft sì una serie di post sul blog dove costruisce una libreria C# per la programmazione funzionale con tipi come tuple, record, unioni di tipi e così via:

Anche Linq è fondamentalmente una libreria per la programmazione funzionale con supporto sintattico in C#.

F#, è disponibile una versione CTP da Microsoft.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top