I. Présentation

F# est un langage dérivé de Caml et conçu spécifiquement pour la plateforme .NET. C'est un langage fonctionnel (et incitant ce mode de programmation), entièrement orienté objet (même les entiers sont des objets et peuvent avoir des méthodes) et supportant la programmation impérative.

Il est dérivé de Caml : il est même possible d'écrire des programmes qui puissent être compilés à la fois par F# et par Caml. C'était par exemple le cas du compilateur F# lui-même, pendant longtemps. Malgré cette proximité, il s'agit bien de deux langages distincts. Certaines fonctionnalités de Caml ne sont pas acceptées par F# ; à l'inverse, F# possède de nombreux ajouts par rapport à Caml.

F# a été créé spécifiquement pour la plateforme .NET. Il bénéficie d'une bonne intégration (contrairement à certains langages qui ont été simplement portés pour .NET). Cela lui permet aussi d'accéder à une très large bibliothèque, de pouvoir s'utiliser avec l'ASP, avec Silverlight, avec XNA, etc.

C'est un vrai langage fonctionnel et il possède toutes les fonctionnalités que l'on attend dans ce paradigme. Il permet de créer ses structures de données de façon très concise et puissante. Il possède un typage statique et fort, et de l'inférence de types. Cela réduit considérablement le débogage et permet de faire du code sûr. Du code F# qui compile a toutes les chances de fonctionner.

F# est un langage très concis et très expressif. Sa verbosité est comparable à ce que l'on trouve dans Python ou Ruby. Il est très souple, peut utiliser du typage dynamique lorsque c'est nécessaire, peut utiliser l'évaluation paresseuse quand il le faut, possède un système de filtrage par motif (pattern matching) extensible, permet de manipuler des flux de manière poussée (via les compréhensions et un système de monades), etc.

Au final, F# est un langage innovant et possédant de nombreuses fonctionnalités uniques. Il est issu de la recherche de chez Microsoft. Il est encore jeune, mais il évolue très rapidement.

II. Mise en place

II-1. Installation

F# est un langage portable qui nécessite la plateforme .NET. .NET est installé par défaut sur certains Windows, il est aussi possible de le récupérer sur le site de Microsoft. De nombreuses personnes utilisent F# sous Linux, MacOS ou d'autres Unix. Pour cela, il est recommandé d'utiliser une version récente de Mono.

Ce langage évoluant très rapidement, il est conseillé de récupérer la dernière version sur le site de Microsoft Research et de le mettre à jour régulièrement. La dernière version a de légers problèmes d'installation, voyez comment installer F# 1.9.4.17 sous Mono.

II-2. Éditeur

Visual Studio est l'éditeur conseillé pour faire du F# sous Windows. Le plugin pour Visual Studio est systématiquement fourni avec le compilateur F#. Il est possible de télécharger une version gratuite de Visual Studio, qui accepte le plugin F#. Ce plugin offre entre autres la coloration syntaxique, la vérification du code (syntaxe et typage) en temps réel, un mode interactif et la complétion contextuelle.

Il existe d'autres éditeurs pouvant être utilisés, aussi bien sous Windows que sous les autres plateformes. Si votre éditeur habituel ne possède pas encore de mode pour F#, regardez s'il en possède un pour OCaml, la syntaxe étant proche. Pour Emacs, il y a notamment un mode F#, gérant la coloration du code, le mode interactif et l'indentation automatique (mais il manque encore de maturité).

II-3. Hello World

Pour tester votre installation, voici le Hello world.

 
Sélectionnez

System.Console.WriteLine "Hello world!"

Ceux qui connaissent .NET doivent reconnaitre la méthode utilisée. Les autres peuvent l'ignorer, car il y a une autre solution, plus courte.

 
Sélectionnez

printfn "Hello world!"

La fonction printf doit être familière pour ceux qui ont fait du C. Elle affiche à l'écran le texte donné en argument et supporte de nombreux formats pour afficher chaines de caractères, nombres et autres types. La fonction printfn correspond à un appel à printf, suivi d'un saut de ligne.

III. Sources d'informations