Utilisateur:Regards sur sciences/OCaml
Traits généraux
modifier- Typage statique, inférence des types par le compilateur. Idée naïve du polymorphisme.
- Passage par valeur.
- Portée lexicale : lorsqu'une définition utilise une variable globale, c'est la valeur de cette variable au moment de la définition qui est prise en compte.
- Curryfication des fonctions. Fonction d'ordre supérieur.
- Gestion automatique de la mémoire.
- Les retours à la ligne et l'indentation ne sont pas signifiants mais sont nécessaires pour la lisibilité dub code.
Définitions et types de base
modifier- let, let rec (pour des fonctions), let rec ... and ..., fun x y -> e.
- let v= e in e',let rec f x= e in e'.
- Expression conditionnelle if e then ev else ep.
- Types de base: int et les opérateurs +, —, *, I, l'opérateur mod quand toutes les grandeurs sont positives; exception Division_by_zero; f bat et les opérateurs +., -., *., I. ; bool, les constantes true et f aise et les opérateurs flot, &&, 11 (y compris évaluation paresseuse). Entiers et flottants sont sujets aux dépassements de capacité.
- Comparaisons sur les types de base: =, <>, <,>, <=, >=.
- Types char et string; 1 x 1 quand x est un caractère imprimable, 'x' quand x est constituée de caractères imprimables, String. length, s. [i], opérateur . Existence d'une relation d'ordre total sur char. Immuabilité des chaînes.
Types structurés
modifier- n-uplets; non-nécessité d'un match pour récupérer les valeurs d'un n-uplet.
- Listes: type 'a list, constructeurs [] et : :, notation [x; y; z] ; opérateur @ (y compris sa complexité); List. length. Motifs de filtrage associés.
- Tableaux: type 'a array, notations [I ... I], t. (i), t. (i) <— y; fonctions length, make, et copy (y compris le caractère superficiel de cette copie) du module Array.
- Type 'a option.
- Déclaration de type, y compris polymorphe.
- Types énumérés (ou sommes, ou unions), récursifs ou non; les constructeurs commencent par une majuscule, contrairement aux identifiants. Motifs de filtrage associés.
- Filtrage: match e with Po —> u0 I Pi —> u1 ...; les motifs ne doivent pas comporter de variable utilisée antérieurement ni deux fois la même variable; motifs plus ou moins généraux, notation -' importance de l'ordre des motifs quand ils ont des instances communes.
Programmation impérative
modifier- Absence d'instruction; la programmation impérative est mise en oeuvre par des expressions impures; unit, O.
- Références: type 'a ref, notations ref, !, : =. Les références doivent être utilisées à bon escient.
- Séquence ;. La séquence intervient entre deux expressions.
- Boucle while c do b done; boucle for u = d to f do b done.
divers
modifier- Usage debegin ... end.
- print_int, print_float, print_string, read_int, read_float, read_line.
- Exceptions: levée et filtrage d'exceptions existantes avec raise, try ... with ...; dans les cas irrattrapables, on peut utiliser f ailwith.
- Utilisation d'un module: notation M.f. Les noms des modules commencent par une majuscule.
- Syntaxe des commentaires, à l'exclusion de la nécessité d'équilibrer les délimiteurs dans un commentaire.
Traits divers
modifier- Types de base: opérateur mod avec opérandes de signes quelconques, opérateur **.
- Types enregistrements mutables ou non, notation {c0 : t0; c1 : t1; . . . }, {c : t0; mutable C1
t1; ... }; leurs valeurs, notations {c0 = V0; c1 = V1; . . . }, e. c, e. c <— V.
- Fonctions de conversion entre types de base.
- Listes: fonctions mem, exists, for_ail, f liter, map, iter du module List.
- Tableaux: fonctions make_matrix, in, mem, exists, for_ail, map et iter du module Array.
- Types mutuellement récursifs.
- Filtrage: plusieurs motifs peuvent être rassemblés s'ils comportent exactement les mêmes variables.
Notation f unct ion Po > V0 I Pi > V1
- Boucle for y = f downto d do b done.
- Piles et files mutables: fonctions create, is_empty, push et pop des modules Queue et Stack ainsi
que l'exception Empty.
- Dictionnaires mutables réalisés par tables de hachage sans liaison multiple ni randomisation par le
module Hashtbl : fonctions create, add, remove, mem, f md (y compris levée de Not_f ound), f ind_opt, iter.
- Sys.argv.
- Utilisation de ocamic ou ocamlopt pour compiler un fichier dépendant uniquement de la biblio-
thèque standard.
Gestions des ressources de la machine
modifier- Gestion de fichiers: fonctions open_ in, open_ out, clo se_ in, clo se_ out, input _une, output -string. * Fils d'exécution: recours au module Thread, fonctions Thread. create, Thread. j 0m.
- Mutex: recours au module Mutex, fonctions Mutex. create, Mutex. lock, Mutex.unlock.