Author: Christian.Queinnec@lip6.fr

## Bibliothèque préchargée

Une première bibliothèque est toujours préchargée que cela soit au niveau de la boucle d'interaction ou en compilation en ligne; dans ce cas, elle est toujours liée. Elle correspond au module `Pervasives` qui est l'environnement initial du langage. Elle contient les déclarations de :

- type : types de base (int, char, string, float, bool, unit, exn, 'a array, 'a list) et les types 'a option (voir page ??) et ('a, 'b, 'c) format (voir page ??).
- exceptions : une dizaine d'exceptions déclenchables par la bibliothèque d'exécution. On peut citer principalement les exceptions généralistes suivantes :
  - Failure`` of`` string qui est déclenchée par la fonction `failwith` appliquée à une chaîne.
  - Invalid_argument`` of`` string qui indique qu'un argument est impossible à traiter par la fonction ayant déclenché l'exception. La fonction `invalid_arg` appliquée à une chaîne déclenche cette exception.
  - Sys_error`` of`` string, pour les entrées-sorties, typiquement dans l'ouverture d'un fichier inexistant en lecture.
  - End_of_file pour la détection de fin de fichier.
  - Division_by_zero sur les entiers.
  Ainsi que des exceptions plus internes comme :
  - Out_of_memory et Stack_overflow pour le dépassement mémoire du tas et de la pile. Il est à noter que l'exception `Out_of_memory` n'est pas récupérable par un programme. En effet quand elle se déclenche, il est trop tard pour allouer de nouveau de l'espace mémoire pour poursuivre le calcul.
    La récupération de l'exception `Stack_Overflow` diffère si le programme a été compilé en code-octet ou en natif. Dans ce dernier cas, il n'est pas possible de la rattraper.
- fonctions : environ 140 dont la moitié correspondent à des fonctions C de la bibliothèque d'exécution. On y trouvera les opérateurs de comparaison et de calcul, les fonctions sur les entiers et les flottants, des fonctions sur les chaînes de caractères, sur les références et les entrées-sorties. Il est à noter qu'un certain nombre de ces déclarations sont en fait des synonymes de déclarations définies dans d'autres modules. Elles sont néanmoins déclarées ici pour des raisons historiques et d'implantation.