Question

Par exemple, en Java, il existe Java fonctionnel et Java d’ordre supérieur . Les deux fournissent essentiellement une petite API pour manipuler des fonctions curry d'ordre supérieur, et peut-être quelques nouveaux types de données (tuples, listes immuables).

Était-ce utile?

La solution

avez-vous consulté F # ?

Un ici sur le blog sera également utile car il explique comment utiliser le nouveau expressions génériques / lambda intégrées à c # 3.0.

Si vous ajoutez simplement l’utilisation de System.Linq au sommet de votre fichier source, BEAUCOUP de nouvelles fonctions intéressantes ont été ajoutées pour travailler avec des collections telles que le pliage / le filtrage / etc.

Autres conseils

LanguageExt semble très prometteur pour faciliter la programmation de styles fonctionnels en C #.

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

En supposant que vous ne pouvez pas utiliser F # pour quelque raison que ce soit et que vous souhaitiez simplement utiliser des paradigmes et idiomes fonctionnels dans votre code C # pour améliorer la qualité & amp; fiabilité:

Correspondance de modèle de style fonctionnel pour C #

Bibliothèque Monad pour C # /. Net

Il existe également un 'elevate' qui contient des éléments fonctionnels tels que des types d'options (maybes), etc. <

Je pense que vous souhaitez F #

De plus, les versions les plus récentes de C # ont de nombreux concepts fonctionnels inclus dans la langue de base.

Il existe peut-être une telle bibliothèque pour C #, mais vous devriez probablement envisager d'utiliser uniquement F # http: //research.microsoft.com/fsharp/fsharp.aspx et http://msdn.microsoft.com/en-us/fsharp/default.aspx .

Microsoft envisage de faire de F # un langage de premier ordre dans Visual Studio, de sorte qu’il devrait y avoir peu de risque à utiliser l’un des CTP pour créer votre contenu initial.

Si vous cherchez quelque chose qui étend C #, alors non, mais F # est un langage fonctionnel basé sur .NET. À partir du " À propos de F # " page :

  

F # est un langage de programmation fonctionnel typé pour .NET Framework. Il combine la concision, l'expressivité et la compositionalité de la programmation fonctionnelle typée avec le support d'exécution, les bibliothèques, l'interopérabilité, les outils et le modèle objet de .NET. F # provient de la famille de langues ML et possède un langage de base compatible avec celui d'OCaml, bien que s'appuyant également sur C # et Haskell. F # a été conçu dès le départ pour être un citoyen de première classe sur .NET, offrant une interopérabilité fluide avec les autres langages .NET. Par exemple, C # et F # peuvent s’appeler directement. Cela signifie que F # a un accès immédiat à toutes les API .NET Framework, y compris par exemple Windows Presentation Foundation et DirectX. De même, les bibliothèques développées en F # peuvent être utilisées à partir d'autres langages .NET.

     

Etant donné que F # et OCaml partagent un langage principal similaire, certaines bibliothèques et applications OCaml peuvent effectuer une compilation croisée directement ou avec des modifications mineures compilées sous condition. Cela permet de compiler et / ou de transférer du code OCaml existant vers .NET, et permet également aux programmeurs de transférer des compétences entre ces langages. Le projet visait principalement à étendre la portée des langues de type OCaml dans des arénas où elles ne sont pas utilisées traditionnellement. Tout au long du projet, les concepteurs de F # sont reconnaissants du soutien et des encouragements de Xavier Leroy et des autres membres de la communauté OCaml.

Ce n'est pas une bibliothèque rétractable en soi, mais Luca Bolognese de Microsoft a une série de billets de blog dans lesquels il construit une bibliothèque C # pour la programmation fonctionnelle avec des types tels que des tuples, des enregistrements, des unions de types, etc. :

Linq est aussi une bibliothèque pour la programmation fonctionnelle avec support syntaxique en C #.

Découvrez http://code.msdn.microsoft.com/FunctionalCSharp pour certains échantillons.

F #, Microsoft propose une version CTP disponible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top