next up previous contents index
Next: Fonctions Up: Quelques éléments de Caml Previous: Quelques éléments de Caml

Appel au compilateur

Sur la plupart des machines, le système Caml Light propose un compilateur indépendant camlc qui produit de façon traditionnelle un programme exécutable à partir d'un programme source, contenu dans un fichier ayant l'extension .ml. On précise le nom de l'exécutable produit en donnant l'option -o nom_de_programme au compilateur; à défaut, il produit le programme a.out. Voici un exemple de compilation obtenue sous le système Unix.

poly% cat fact.ml
let rec fact x = if x <= 1 then 1 else x * fact (x - 1);;

print_int (fact 10); print_newline ();;
poly% camlc fact.ml
poly% a.out
3628800

En dehors du compilateur proprement dit, les systèmes Caml offrent une interface interactive de dialogue avec le compilateur. Dans cette interface, on entre successivement des phrases qui sont compilées, puis exécutées au vol. Voici une session obtenue sur une machine Unix en lançant le système interactif par la commande camllight.

poly% camllight
>       Caml Light version 0.71

#let rec fact x = if x <= 1 then 1 else x * fact (x - 1);;
fact : int -> int = <fun>
#fact 10;;
- : int = 3628800
#quit();;
poly%

Dans cette utilisation, Caml indique le résultat des calculs et le type des objets définis. Il trouve automatiquement ces types par un algorithme d'inférence de type. Au lieu de taper directement les programmes, on peut charger les fichiers qui les contiennent par la fonction include. Les phrases du fichier sont alors compilées et exécutées à la volée, exactement comme si on les avait tapées dans le système interactif. Ainsi, le chargement du fichier fact.ml exécute les phrases dans l'ordre la fin du programme. On peut alors reprendre l'interaction comme avant le chargement:

#include "fact.ml";;
fact : int -> int = <fun>
3628800
- : unit = ()
#

Le système interactif est donc plutôt réservé à l'apprentissage du langage. Lorsqu'on maîtrise Caml et qu'on développe de gros programmes, on privilégie le compilateur indépendant qui s'intègre plus facilement aux outils de gestion automatique des logiciels. On réserve alors le système interactif au test rapide des programmes, et dans une moindre mesure à la mise au point.


next up previous contents index
Next: Fonctions Up: Quelques éléments de Caml Previous: Quelques éléments de Caml

1/11/1998