OCaml
Le langage OCaml est un langage de programmation fonctionnel permettant également les programmations impérative et orientée objets. Il est également doté d'un puissant système de modules et foncteurs (fonctions sur les modules).
Le système d'inférence des types (les types sont devinés par le compilateur) permet un développement rapide des programmes. Le typage statique (i.e. à la compilation) offre la garantie d'une exécution correcte.
La compilation vers du bytecode offre une grande portabilité. L'utilisation interactive dans un shell de commandes est également possible. Enfin, la compilation en code natif donne une rapidité d'exécution proche de celle des programmes écrits en C.
Exemple de code, la fonction factorielle :
let rec fact = function 0 -> 1 | n -> n * fact (n-1);;
La force du typage statique s'exprime de manière frappante dans le filtrage des multiplets ; l'exemple suivant est un style de programmation inaccessible à Python par exemple.
let a_plus_b_fois_c = fun a b c -> match ( a , b , c ) with | ( true , _ , _ ) | ( _ , true , true ) -> true | ( _ , _ , _ ) -> false ;;
Le compilateur infère le type de la fonction :
val a_plus_b_fois_c : bool -> bool -> bool -> bool = <fun>
La distribution standard inclut également :
- un outil graphique pour parcourir les bibliothèques (ocamlbrowser) ;
- un générateur de documentation à partir des commentaires du code source (ocamldoc), équivalent de javadoc ou doxygen ;
- un débogueur (ocamldebug) ;
- un outil de profilage (ocamlprof) ;
- un outil de compilation (ocamlbuild) ;
- des générateurs d'analyseurs lexicaux (ocamllex) et grammaticaux (ocamlyacc) ;
- un outil de pre-processing et pretty-printing (camlp4).
Il est possible d'interfacer avec du code C ou Fortran.
Fabrication de la bibliothèque ocamlmath et de sa documentation.
Utilisation de la bibliothèque ocamlmath.
L'installation est décrite pour différents environnements.
L'installation sous Microsoft Windows semble requérir un minimum de travail : http://ocaml.org/learn/portability.html
Une distribution binaire est cependant disponible : http://protz.github.com/ocaml-installer/