Cours alternatif d’OCaml

Logo OCaml
I — Notions de base

Plus de types !

Comme nous l’avons vu sur la page précédente, OCaml a un type pour les entiers (int), et un pour les flottants (float), comme Python ! La seule différence est qu’il y a des opérateurs différents pour ces types :

int float
Exemples 2, -2 2., 1e3, 3.14
Addition + +.
Soustraction - -.
Multiplication * *.
Division / /.
Modulo mod mod_float

Mais OCaml possède bien sûr d’autres types de base.

Les booléens

Le type bool existe aussi en OCaml, et fonctionne à peu près de la même façon qu’en Python. La principale différence est qu’on écrit true et false sans majuscules. Les opérateurs logiques ne s’écrivent aussi pas de la même façon, mais leur fonctionnement est le même :

Et logique &&
Ou logique ||
Non logique not

Les opérateurs de comparaison sont quasiment les mêmes qu’en Python : <, <=, >, >=. Seuls l’égalité et la différence changent : on utilisera respectivement = et <> en OCaml (== et != existent aussi, mais n’ont pas exactement le sens qu’on attend intuitivement). Les opérateurs de comparaison ont l’avantage de fonctionner pour n’importe quel type, tant que l’expression à droite et à gauche sont de même type (on peut comparer deux int, ou deux float, mais pas un int et un float).

Le texte

En OCaml, une distinction est faite entre un caractère seul et une chaîne de caractères.

Attention, 'a' et "a" sont donc différents. De plus, contrairement à Python qui supporte en plus de la table ASCII les caractères Unicode (permettant d’avoir des accents, des caractères d’autres alphabets, des émojis, etc), OCaml supporte mal l’Unicode : il vaut mieux éviter de mettre d’accents dans les textes qu’on manipulera.

Et, comme + sert à l’addition de deux entiers, l’opérateur pour concaténer deux string est ^.

Passer d’un type à l’autre

OCaml fournit plusieurs fonctions pour passer d’un type à un autre. Elles ont toutes un nom de la forme DEST_of_ORIG, où DEST est le type de « destination », et ORIG le type d’origine. Par exemple, pour faire la conversion d’un float en int, on utilisera int_of_float.

Vous ne savez pas encore appeler des fonctions pour l’instant, mais c’est l’objet de la page suivante !