Dialoguer avec Caml
Caml offre non seulement un compilateur traditionnel, qui transforme des fichiers de code source en code compilé exécutable par la machine, mais aussi un systeme interactif qui vous permet de dialoguer directement avec Caml, sans passer par l’intermédiaire d’un fichier. Dans ce mode, le langage s’utilise comme une «calculette»: vous tapez des phrases au clavier de l’ordinateur et Caml réagit en vous donnant immédiatement les résultats de vos programmes. Nous utiliserons d’abord cette méthode d’interaction directe car elle facilite l’apprentissage. Nous verrons plus tard l’utilisation du compilateur indépendant, à partir du chapitre 10. Vous pouvez donc entrer au terminal les exemples qui suivent, si vous avez déja` installé le syst`eme Caml Light sur votre machine. Toutes les phrases soumises à Caml doivent être munies d’une indication de fin de phrase, ce qu’on note en Caml par ;; (deux points-virgules accolés). C’est justifié pour un syst`eme qui offre une version interactive, dans la mesure ou` il est impossible de deviner quand l’utilisateur a terminé sa phrase: par exemple apr`es 1 + 2, il est permis d’écrire encore + 3 pour évaluer 1 + 2 + 3. D’autre part, une phrase peut s’étendre sur autant de lignes que nécessaire; la fin de la ligne ne se confond donc pas avec la fin de la phrase. On devra donc écrire ;; pour signaler la fin de la phrase. Il faut bien entendu également appuyer sur la touche «retour chariot» (return en anglais) comme c’est traditionnel pour toute interaction avec un ordinateur. En réponse au signe d’invite de Caml (le caract`ere # que Caml imprime pour indiquer qu’il attend que nous tapions quelque chose), demandons-lui d’effectuer un petit calcul: l’addition de 2 et de 2. Pour cela nous entrons simplement l’opération à effectuer, 2 + 2, suivie de la marque de fin de phrase ;;.
# 2 + 2;; – : int = 4
Caml nous répond immédiatement, en indiquant par un signe – que nous avons simplement calculé une valeur, que cette valeur est de type entier (: int) et qu’elle vaut 4 (= 4). Vous constatez que Caml a déduit tout seul le type du résultat du calcul. Pour un exemple si simple, ce n’est pas vraiment impressionnant, mais c’est un mécanisme absolument général: quelle que soit la complexité du programme que vous lui soumettrez, Caml en déduira le type sans aucune intervention de votre part.
Les définitions
Vous pouvez donner un nom à une valeur que vous calculez, pour ne pas perdre le résultat de votre calcul. La construction qui permet ainsi de nommer des valeurs s’appelle une définition.
Les définitions 7
Définitions globales
De même qu’en mathématiques on écrit: «soit s la somme des nombres 1, 2 et 3», on écrit en Caml («soit» se traduit par let en anglais):
# let s = 1 + 2 + 3;; s : int = 6 Caml nous répond que nous avons défini un nouveau nom s, qui est de type entier (: int) et vaut 6 (= 6). Maintenant que le nom s est défini, il est utilisable dans d’autres calculs; par exemple, pour définir le carré de s, on écrirait:
# let s2 = s * s;; s2 : int = 36 Les définitions sont des liaisons de noms à des valeurs. On peut considérer ces noms (qu’on appelle aussi identificateurs, ou encore variables) comme de simples abréviations pour la valeur qui leur est liée. En particulier, une définition n’est pas modifiable: un nom donné fait toujours référence à la même valeur, celle qu’on a calculée lors de la définition du nom. Le mécanisme du «let» est donc fondamentalement différent du mécanisme d’affectation, que nous étudierons plus loin. Il est impossible de changer la valeur liée à un nom; on peut seulement redéfinir ce nom par une nouvelle définition, donc un nouveau «let».
Une fois défini, un nom a toujours la même valeur