[Lang] [F#] Syntaxe
Note : ce billet a été écrit début 2007. Depuis, j'ai réalisé un début de cours pour F#, bien plus complet. Je vous invite à aller sur mon site pour lire mes articles F# en français.
La syntaxe de F# est très proche de celle de Caml, puisque le langage se veut compatible avec Caml. Il y a pourtant quelques différences qu'il est bon de connaître.
Commentaires et compilation conditionnelle
En plus des commentaires de Caml "(* ... *)" (on rappelle aussi que les commentaires peuvent être imbriqués), la syntaxe du C++ est acceptée : "//" commente jusqu'à la fin de la ligne. Comme en C, on a maintenant aussi les directives de compilation : #if ident ... #else... #endif. Si ident est défini (à l'aide de l'option du compilateur --define), la première partie est conservée, sinon c'est la deuxième, juste après le else (qui est facultatif).
Si l'on souhaite écire du code compilable aussi bien avec ocamlc
qu'avec le compilateur F#, on dispose de deux nouveaux tests. (*F# F#*) ne sera pris en compte que si on compile avec fsc, et (*IF-CAML*) (*ENDIF-CAML*) sera pris en compte uniquement sous Caml.
Syntaxe light
C'est là que les choses deviennent intéressantes. La syntaxe light est optionnelle (il faut mettre #light au début de votre code), mais je la conseille vivement. Elle permet, comme en Python, de se baser sur l'indentation du code pour le parser. Évidemment, cela oblige à toujours indenter le code (mais ça, on le faisait déjà). Il y a quand même quelques contraintes. Quand on a plusieurs let successifs, ou plusieurs intructions, les lignes doivent être alignées sur la même colonne. On indente à chaque fois que l'on commence un nouveau bloc ou lorsque l'on écrit une instruction sur plusieurs lignes.
L'intérêt de tout ça est de simplifier la syntaxe : tous les "in"après les "let" peuvent disparaître. De même, les points-virgulesentre les instructions sont supprimés (et comme en Caml, ne mettez jamais de ";;" dans un fichier source : c'est moche et inutile ; cela ne sert que dans le mode interactif), et pareil pour le "done". Pour les exemples, je vous renvoie au manuel.
Attention, n'utilisez jamais de tabulation ! Utilisez seulement des espaces (deux ou trois).
Strings
Les chaînes de caractères sont données verbatim (c'est-à-dire que le caractère "\" ne sera pas interprété) quand elles sont préfixées par le caractère "@". Ce qui donne : let s = @"c:\windows\".
Grands nombres
Grande simplification de syntaxe par rapport à OCaml, les entiers détaille arbitraire peuvent être écrits directement dans le code (sans passer par une fonction obscure). Ainsi, en suffixant par I (ex :3141592654I) on désigne un entier long et par N (ex : 42N) un nombre rationnel. De plus, comme pour les flottants, les opérateurs arithmétiques usuels sont surchargés, ce qui allège beaucoup la syntaxe. Il y a donc un seul caractère à ajouter pour des BigInt plutôt que des Int.
- LLB
- 01:30
- > Lien permanent
- > Commentaires
- > Abus ?


![[Jeu] Ideo](images_/carre1.gif)
![[Lang] [F#] Syntaxe](images_/carre3.gif)
