TD de programmation fonctionnelle (ocaml) - Antoine Frénoy - 2011/2012


Sommaire


Séances de Travaux Dirigés

TD 1 - 7 février 2012

L'énoncé du TD est disponible ici : TD1.pdf. Une proposition de corrigé : TD1.ml.

TD 2 - 14 février 2012

L'énoncé du TD, en deux parties, est disponible ici : TD2.pdf et TP2.pdf. Une proposition de corrigé : TD2.ml et TP2.ml.

TD 3 - 21 février 2012

L'énoncé du TD, en deux parties, est disponible ici : TD3.pdf et TP3.pdf. Une proposition de corrigé : TD3.ml et TP3.ml.

TD 4 - 6 mars 2012

L'énoncé du TD, en deux parties, est disponible ici : TD4.pdf et TP4.pdf. Une proposition de corrigé : TD4.ml et TP4.ml.

TD 5 - 13 mars 2012

L'énoncé du TD, en deux parties, est disponible ici : TD5.pdf et TP5.pdf. Une proposition de corrigé : TD5.ml et TP5.ml.

TD 6 - 20 mars 2012

L'énoncé du TD, en deux parties, est disponible ici : TD6.pdf et TP6.pdf. Une proposition de corrigé : TD6.ml et TP6.ml.

TD 7 - 27 mars 2012

L'énoncé du TD, en deux parties, est disponible ici : TD7.pdf et TP7.pdf. Une proposition de corrigé : TD7.ml et TP7.ml.

TD 8 - 3 avril 2012

Révisions (récursivité et récursivité terminale) : correction des exercices des TP 6 et 7.

TD 9 - 10 avril 2012

L'énoncé du TD, en deux parties, est disponible ici : TD9.pdf et TP9.pdf. Une proposition de corrigé : TD9.ml, TD9Ex2.ml et TP9.ml.

TD 10 - 24 avril 2012

L'énoncé du TD est disponible ici : TD10.pdf. Une proposition de corrigé : TD10.ml.

TD 11 - 30 avril 2012

L'énoncé du TD, en deux parties, est disponible ici : TD11.pdf et cc4.pdf. Une proposition de corrigé : TD11.ml et cc4.ml.

TD 12 - 7 mai 2012

L'énoncé du TD est disponible ici : TD12.pdf. Une proposition de corrigé : TD12.ml.

TD 13 - 15 mai 2012

L'énoncé du TD est disponible ici : TP13.pdf. Une proposition de corrigé : TP13.ml.

Utilisation de caml

Depuis les salles informatiques de l'université (ou en ssh):

Solution basique : utilisation directe du toplevel

On peut bien sûr utiliser directement le toplevel ocaml. Il suffit d'ouvrir un terminal et de taper la commande ocaml : On est alors dans le toplevel. Ctrl+D permet de quitter le toplevel. Ctrl+C permet d'interrompre la saisie ou l'interprétation d'une ligne. Vous remarquerez cependant que ce mode d'édition est fort peu pratique : il est impossible de réutiliser une ligne validée, de revenir en arrière, les copier-coller sont laborieux ... Bref ce n'est pas la meilleure façon d'utiliser ocaml !

Variante : charger dans le toplevel un fichier édité par un autre programme

On peut cependant améliorer un peu : éditez un fichier appelé par exemple td1.ml avec votre éditeur de texte préféré. Rentrez vos commandes, enregistrez le fichier. Lancer alors le toplevel depuis un terminal en vous plaçant dans le dossier contenant le fichier que vous venez d'éditer (utilisez la commande cd). Dans le toplevel, tapez #use "td1.ml" ;; . Attention, il faut taper un # en plus de celui affiché par le toplevel. Le fichier td1.ml sera alors automatiquement chargé et évalué. On dispose ainsi d'un véritable éditeur ce qui est très appréciable pour la saisie de programmes complexes, en revanche on perd l'interactivité : la directive use doit être saisie après chaque modification du fichier source, et on ne peut pas évaluer celui-ci pas à pas.

Solution conseillée : utilisation du mode tuareg d'emacs

Il existe une alternative supérieure à l'utilisation du toplevel : l'éditeur de texte emacs s'interface parfaitement avec ocaml grâce au mode "tuareg". Mode d'emploi :

Télechargez le fichier tuareg.tar.gz, et décompressez le à la racine de votre répertoire personnel. On peut pour cela taper dans un terminal :

cd ~
wget "http://perso.crans.org/frenoy/caml2012/tuareg.tar.gz"
tar -xzvf tuareg.tar.gz
rm -f tuareg.tar.gz

Le dossier tuareg créé ne doit pas être déplacé.

Vous pouvez lire le fichier tuareg/README et plus généralement la documentation d'emacs (man emacs) pour une documentation très complète sur la configuration et l'utilisation d'emacs et du mode tuareg. Cependant cet éditeur est assez complexe à prendre en main, aussi je vous propose une configuration simplifiée : téléchargez le fichier emacs-conf.tar.gz et décompressez le à la racine de votre répertoire personnel. On peut pour cela taper dans un terminal :

cd ~
wget "http://perso.crans.org/frenoy/caml2012/emacs-conf.tar.gz"
tar -xzvf emacs-conf.tar.gz
rm -f emacs-conf.tar.gz

Le fichier .emacs crée ne doit pas être déplacé.

Le fichier tuareg-mode.pdf contient un condensé des raccourcis claviers les plus utilisés d'emacs ainsi que de ceux spécifiques au mode tuareg. Vous constaterez que ces raccourcis sont compliqués à retenir ! Heureusement le fichier .emacs que vous venez d'installer dans votre dossier personnel définit des raccourcis claviers plus conventionnels :

f2 : ouvre un fichier existant ou créer un nouveau fichier (emacs demande de saisir un nom)
f3 : enregistre les modifications apportées au fichier en cours d'édition
Ctrl+C : copier la selection
Ctrl+X : couper la selection
Ctrl+V : coller la selection
Ctrl+entrée (mode tuareg seulement) : évalue la ligne courante (ie envoie la ligne courante à ocaml)
f5 (mode tuareg seulement) : évalue tout le fichier depuis le début
Ctrl+K (mode tuareg seulement) : tue ocaml (qui pourra être relancé)
Ctrl+Q (mode tuareg seulement): tue ocaml et ferme emacs

Ouvrir un fichier dont le nom finit par .ml (soit en utilisant f2 depuis emacs, soit en lançant directement la commande emacs nom.ml dans un terminal) active automatiquement le mode tuareg. La première fois que les raccourcis Ctrl+entrée ou f5 seront utilisés, emacs scindera la fenêtre en deux et lancera un interpréteur caml dans la moitié basse. Validez avec entrée lorsqu'emacs vous propose de lancer ocaml.

Attention, pensez à sauvegarder très régulièrement votre travail !

Depuis son ordinateur personnel :

Sous linux (solution adaptable à Mac OS X)

Installez ocaml à l'aide de votre gestionnaire de paquets (on peut utiliser MacPorts sous Mac OS X). Suivez alors la même démarche qu'en salle informatique.

Sous windows

Une première possibilité, relativement complexe mais efficace, est d'installer ocaml et emacs en suivant la documentation de leurs sites web respectifs pour l'installation sous windows, ce qui permet alors de travailler avec les mêmes outils qu'en salle informatique (voir aussi Cygwin pour un portage des outils unix sous windows).

Une autre possibilité, plus simple, est l'utilisation des excellents outils fournis par Jean Mouric. Certains de ces outils fonctionnent aussi sous Mac OS X. Attention, veillez à bien utiliser ocaml et non pas caml light qui est une autre implémentation du language caml.

Se connecter à distance aux salles informatiques

Vous pouvez vous passez de l'installation de ocaml sur votre ordinateur personnel en vous connectant par ssh à saphyr.ens.math-info.univ-paris5.fr. Si vous êtes sous Linux ou Mac OS X, tapez dans un terminal :

ssh -X login@saphyr.ens.math-info.univ-paris5.fr

login est votre nom d'utilisateur. Saisissez votre mot de passe quand demandé. Vous vous retrouvez alors dans un terminal à partir duquel vous pouvez utiliser ocaml, en ayant accès à tous les documents de votre dossier personnel. Notez bien que l'option -X est nécessaire pour lancer des programmes utilisant X11, par exemple emacs en mode graphique.

Sous Windows, on peut utiliser PuTTY ou les outils cygwin.

Attention, en cas de coupure réseau vous serez déconnecté brutalement : pensez à sauvegarder très régulièrement votre travail !

Quelques conseils pratiques

Rappels de cours, astuces et erreurs à éviter