Installation de OCaml

[sur MacOS-X]

Je vous renvoie à une page spécialisée pour l'installation sur un système Windows-XP. En ce qui concerne Linux, la page actuelle devrait suffire, mutatis mutandis puisque MacOS-X est un système Unix. Bref, je suis sur une machine MacOS-X [Tiger 10.4], peu importe que ce soit un processeur Intel ou Power-PC.

ETAPE 1 : Installer le système OCAML

Au moment d'écrire ces lignes, il en est à la version 3.09. Vous allez sur le site de l'INRIA http://caml.inria.fr/pub/distrib/ocaml-3.09 et vous récupérez ce qui vous intéresse :

Vous installez la doc où vous voulez. L'image-disque fait environ 13 Mo. Une fois ouverte, vous voyez qu'elle contient un "package" ocaml.pkg. Comme d'hab, un double-clic sur le package provoque l'installation du logiciel. Il sera placé dans /usr/local/. Les binaires seront dans /usr/local/bin, par exemple la commande ocaml. Il est donc nécessaire d'ajouter à votre PATH le chemin /usr/local/bin/. Je suppose que vous êtes sous bash [le shell préféré de Tiger]. Vous ouvrez un Terminal [dans le dossier Applications/Utilitaires] et vous ajoutez à votre fichier .profile l'extension du PATH. Par exemple, j'utilise JAVA 1.5 et PLT-SCHEME v352 en ligne de commande, j'édite mon fichier .profile avec Emacs par exemple, et j'y ajoute donc les chemins menant aux exécutables :

   PATH=/System/Library/Frameworks/JavaVM.Framework/Versions/1.5.0/Commands:\
/Applications/PLT\ Scheme\ v352/bin/:\
/usr/local/bin/:\
$PATH

Relancez le Terminal. A partir de maintenant, le système OCaml est opérationnel en ligne de commande :

$ ocaml
Objective Caml version 3.09.3

# let rec fac(n) = if n=0 then 1 else n*fac(n-1);;
val fac : int -> int = <fun>
# fac(10);;
- : int = 3628800
# ^D
$

Le chameau répond. Je quitte salement par un Ctrl-D car je n'ai pas encore lu la doc ;-) Bon début... Mais la ligne de commande est vraiment tristounette !

ETAPE 2 : The easy way : DrOCaml !

Si vous programmez déjà en Scheme (bravo !), il suffit d'installer DrOCaml comme "langage embarqué" ! Et zou... Sinon, passez à l'étape suivante et installez le mode TUAREG dans Emacs, mais le fonctionnement n'est pas des plus agréable. Il manque définitivement à CAML un environnement digne de ce nom, de la qualité de DrScheme par exemple.

ETAPE 3 : Installer un bel EMACS

Car entre nous, celui qui est livré en standard sous le ligne de commande par Apple ne provoque pas l'enthousiasme : pas de souris, etc. On va donc donc télécharger un Emacs encapsulé dans une véritable application au look Aqua. Il y en a plusieurs. J'opte pour celui qui se trouve dans la zone UNIX & Open Source d'Apple :

http://www.apple.com/downloads/macosx/unix_open_source/carbonemacspackage.html

Je vous laisse quelques minutes pour le télécharger et l'installer, je vais boire un café...

Ok ? Il fonctionne bien ? Parfait.

ETAPE 4 : Configurer le mode TUAREG dans EMACS

Emacs a un mode spécialisé pour la plupart des langages de programmation [Lisp, Scheme, Java, C...]. Lorsqu'un nouveau langage apparaît, quelqu'un se dévoue en général pour programmer un nouveau mode pour Emacs, qui reconnaîtra l'extension de fichier et ajoutera automatiquement un nouveau menu, des coloriages syntaxiques, etc. Vous trouverez sur la page Web d'Albert Cohen le mode TUAREG qui permet de programmer en OCAML sous Emacs. Je vous laisse là aussi le télécharger. Les explications de la page Web sont claires pour l'installation :

ETAPE 5 : Débuter en CAML sous EMACS

On croise les doigts ? Lancez à nouveau EMACS et demandez l'ouverture d'un fichier en CAML, d'extension .ml, par exemple fac.ml pour programmer une factorielle. EMACS reconnaît l'extension d'un fichier CAML et passe en mode TUAREG [il le dit en bas de sa fenêtre]. Un fichier sera une suite d'expressions CAML, notamment des définitions et des jeux de tests, par exemple :

let rec fac(x) = if x=0 then 1 else x*fac(x-1)
in fac(5);;

dont au passage la contrepartie en Scheme serait :

(letrec ((fac (lambda (x) (if (= x 0) 1 (* x (fac (- x 1)))))))
(fac 5))

mais ne nous égarons pas... Le menu Tuareg d'EMACS propose en haut Interactive Mode/Evaluate Buffer. Essayez ! La fenêtre est coupée en deux, et les expressions du haut sont évaluées en bas, un peu comme avec DrScheme :

Vous pouvez aussi entrer des évaluations directement au toplevel dans la fenêtre du bas, le prompt vous attend. Le toplevel n'est pas toujours très propre et bien ordonné, comme en DrScheme [il manque vraiment un bon IDE à CAML à mon goût !]. Et nous nous arrêterons là...

UN AUTRE TOPLEVEL : CocOCaml

Sur MacOS-X uniquement, une fois OCaml installé, vous pouvez télécharger CocOCaml. Cool pour un apprentissage interactif...