Langages Enchâssés 2004-2005 TD numéro 1 1. Afin de préparer l'utilisation du système Lisp + l'interface SLIME, lire le fichier README du répertoire : /opt/gnu/share/emacs/site-lisp/slime-1.0 et suivre les instructions. 2. Rajouter le code suivant dans votre .emacs afin que la commande `info-lookup-symbol' (C-h C-i) marche correctement : (require 'info-look) (info-lookup-add-help :mode 'lisp-mode :regexp "[^][()'\" \t\n]+" :ignore-case t :doc-spec '(("(ansicl)Symbol Index" nil nil nil))) 3. Dans votre fichier de démarrage du shell (.bashrc par exemple), rajouter l'exportation et une affectation de la variable CMUCLLIB à : /opt/cmucl/lib/cmucl/lib/ Rajouter également : /opt/cmucl/bin/ à votre PATH. 4. Pour que ces modifications prennent effet, il faut sortir de, et ensuite redémarrer, Emacs. 5. Vérifier que cela marche en tapant M-x slime sous Emacs. (la première fois, il y aura un certain nombre de messages, car le code source de SLIME est alors compilé). 6. Taper C-h i (ou M-x info si vous avez redéfini votre touche C-h) pour démarrer info sous Emacs. Pour avoir des informations sur le système `info', taper ensuite `m info' et suivre les instructions. À partir de la racine de l'arborescence `info', vous pouvez accéder à la norme du langage Common Lisp, en tapant `m ANSI' (pour retourner à la racine à partir d'une page info quelconque, taper `d' (pour `directory'). Vous pouvez également accéder à la documentation de SLIME de cette façon. 7. Regarder le site web du module : http://dept-info.labri.fr/~strandh/Teaching/Langages-Enchasses/2004-2005/ suivre quelques liens, en particulier vers Cliki. 8. Démarrer Emacs et couper la fenêtre principale en deux verticalement grâce à la commande Emacs C-x 3. Il est recommandé d'avoir le code d'un côté et l'interaction avec SLIME de l'autre. Démarrer SLIME dans l'une des deux fenêtres. 9. Dans l'autre fenêtre (changer la fenêtre avec C-x o. Dans cette autre fenêtre, charger un ficher avec extension `.lisp'. Taper du code Common Lisp pour tester un certain nombre de commandes Emacs : C-M-f, C-M-b, C-M-a, C-M-e C-M-t C-i C-x h, C-M-\ 10. Écrire un programme Common Lisp pour manipuler une liste de personnes. Une personne sera représentée par une instance de classe (regarder `defclass' dans la norme). La classe doit avoir un créneau `age' et un créneau `taille'. Créer une liste d'une dizaine de personnes. Puis écrire des fonctions pour : * calculer l'age moyen des personnes de d'une liste de personnes. * compter le nombre de personnes dont l'age est supérieur à une valeur passée en argument. * calculer la somme de l'age de chacune des personnes dont la taille dépasse une valeur passée en argument. Se servir systématiquement des commandes SLIME pour faciliter le développement, en particulier : C-c C-c M-TAB (ou C-[ C-i) 11. Tester votre programme depuis le tampon *slime-repl*. Se servir des commandes : M-p, M-n M-r 12. À la fin du TD, imprimer votre programme.