Nouvelles fonctionnalités C#3.0 dans Mono !

Miguel de Icaza avait laissé sous-entendre que le projet Mono implémenterait C#3.0 dans le compilateur gmcs sans pour autant préciser de date. Hé bien ces derniers jours plusieurs fonctionnalités propre à C#3.0 ont atterri dans le SVN.

Il s’agit des lambda fonctions (tout droit venus des langages fonctionnels), des méthodes d’extension (pour étendre un type avec de nouvelles méthodes sans toucher a son code interne) et le typage implicite avec le keyword type (normalement le keyword var devrait suivre). Pour des exemples vous pouvez regarder les posts correspondant de Miguel et de Marek.

Il est vrai que, à part Linq qui est une assez grosse brique de C#3.0 (et plus largement de .NET3.0) et qui demandera du temps pour être correctement implémenté, ces fonctionnalités sont celles que j’attendait le plus dans C#. Elles permettent entre autres d’utiliser un style plus ‘fonctionnel’ (et ce encore plus lorsque Linq sera implémenté) ce qui est en vogue en ce moment. Les méthodes d’extensions sont aussi intéressantes selon moi car, utilisées avec modération, elles constituent un moyen souple pour éviter l’héritage et une composition trop lourde.

En résumé pour tester il vous faudra compiler Mono depuis les sources du dépôt Subversion (un ptit coup de svn co svn://svn.myrealbox.com/source/trunk/mcs et svn co svn://svn.myrealbox.com/source/trunk/mono) ou attendre la prochaine version de Mono.

Comments 3

  1. Camille B wrote:

    Finalement, c’est assez amusant ce « retour » au fonctionnel, une preuve supplémentaire de la grandeur de Lisp ?

    P.S.: d’ailleurs existe-t-il un lisp pour .NET/Mono ?

    Posted 13 mai 2007 at 19 h 24 min
  2. garuma wrote:

    A mon avis il y’a beaucoup de chose que l’on peut « importer » du fonctionnel sans pour autant être un langage fonctionnel pure comme Haskell, Scheme ou Lisp. Des choses comme le pattern matching, les fonctions first-class, l’évaluation paresseuse, et l’absence d’effet de bord sont des caractéristiques intéressantes à ajouter dans un langage profondément impératif comme C#. J’avoue que dans mon nouveau projet j’aime beaucoup la possibilité de passer des fonctions comme argument et d’utiliser les méthodes anonymes avec les generic.

    Il y’a quelque implémentation de Scheme pour .NET (Bigloo a un backend expérimental) et il y’a le Common Larceny Scheme (http://www.ccs.neu.edu/home/will/Larceny/) qui est écrit pour .NET et qui est porté par quelqun sur Mono pour le Google SoC.

    Posted 13 mai 2007 at 19 h 40 min
  3. Camille B wrote:

    Je ne savais pas que Bigloo avait un backend expérimental, très intéressant !

    Posted 13 mai 2007 at 22 h 21 min

Post a Comment

Your email is never published nor shared. Required fields are marked *