Extrait de wikipedia - OCaml, est la suite du langage Caml créé en 1996. C'est un meta-langage, projet open source de l'Inria, un langage fonctionnel auquel on a ajouté la programmation impérative, orientée objet et modulaire. Le systeme de types hérité, statique, fort et inféré, permet une manipulation aisée de structures de données complexes : on peut aisément représenter des types algébriques, c'est-a-dire des types hiérarchisés et potentiellement récursifs (listes, arbres), et les manipuler aisément a l'aide du filtrage par motif. Cela fait de OCaml un langage de choix dans les domaines demandant la manipulation de structures de données complexes, par exemple les compilateurs. Le typage fort, ainsi que l'absence de manipulation explicite de la mémoire (présence d'un ramasse-miettes) font de OCaml un langage trés sur. Il est aussi réputé pour ses performances, grâce a la présence d'un compilateur de code natif.
L'installation est disponible à travers les principaux systèmes de paquets (apt-get, port, yum, brew, etc...)
Compilateur générant du code portable | ocamlc |
Compilateur générant du code natif plus efficace | ocamlopt |
Interpréteur | ocaml |
Editeur | gedit |
Les fichiers en ocaml ont l'extention .ml. Exemples de commandes :
ocamlc hello.ml | Compile le fichier hello.ml pour produire un exécutable en code portable a.out. |
ocamlopt hello.ml | Compile le fichier hello.ml pour produire un exécutable en code natif a.out. |
ocaml -o hello hello.ml | Compile le fichier hello.ml pour produire un exécutable hello. |
./hello | Execute le programme hello |
Editeur | gedit |
L'interpréteur se lance en tapant dans un terminal la commande ocaml. Chaque instruction passée à l'interpréteur doit se terminer par ;;. Pour quitter tapez la commande #quit suivie de ;; ou bien faite simplement un <Ctrl D>.
Le programme hello :
Let ( ) = print_string "Hello le monde!\n"
Les nombres eniers peuvent etre écrit en décimal, binaire, octal, hexadécimal, et les chiffres peuvent etre séparés par des _ :
Préfixe Base 0x hexadécimal 0o octal 0b binaire
Suffixe Type l int32 L int64 0b binaire
min_int Le plus petit int max_int Le plus grand int true Valeur booléenne true false Valeur booléenne false && Et booléen || Ou booléen not Non booléen land Et bit à bit (opère sur deux int) lor Ou bit à bit (opère sur deux int) lxor Non ou bit à bit (opère sur deux int) lnot Non bit à bit (opère sur deux int) int_of_string Sys.argv.(1) Lit un entier en premier argument de la ligne de commande '\n' caractère saut de ligne "ga"^"bu" "gabu" Concaténation de chaine"abcd".[1] 'a'String.length("abcd") 4print_string("gabu") print_char('a') print_int(3) print_float(3.14) print_newline() print_endline("abcd") Printf.printf(...) printf read_int( ) Lit un entier sur l'entré standart read_float( ) Lit un float sur l'entré standart read_line( ) Lit une ligne sur l'entré standart
ocamlc -i prog.ml Affiche les types des variables apparaissant dans le prorgramme prog.ml
let p = ref 5
p:= !p +1
6Crée une variable p de type int ref.
!p est de type int et vaut 5. ! est l'opérateur de déférencement.+, *, / Opération sur les int +., *., /., ** Opération sur les float float(4) 4.0 Converti un int en float truncate(3.14) 3 Retourne l'int juste inférieur ou égale min_float Valeur minimal positive d'un float max_float Valeur maximal positive d'un float neg_infinity Moins l'infini infinity Plus l'infini nan Indéterminé
for i = 1 to 10 do
print_int i
doneAffiche 123456789 Le point-virgule ";" sépare les intsructions sur une meme ligne.
Pour utiliser la bibliothèque graphique d'OCaml, on ajoute la bibiothèque graphics.cma dans l'ordre de compilation comme suit :
ocamlc graphics.cma prog.ml
ocamlopt graphics.cmxa prog.mlopen Graphics
let () = open_graph " 600x400"
let x = ref 300.
let y = ref 200.
let () =
moveto (truncate(!x)) (truncate(!y));
for i = 0 to 200000 do
let dx = Random.float 1. -. 0.5 in
let dy = Random.float 1. -. 0.5 in
x := !x +. dx;
y := !y +. dy;
lineto (truncate(!x)) (truncate(!y));
done;
ignore (read_key());
---- 28 décembre 2014 ----