Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
caml_light [Le 15/04/2013, 14:26]
fran.b [Installation]
caml_light [Le 21/09/2022, 22:24] (Version actuelle)
46.193.6.164 [Installation]
Ligne 1: Ligne 1:
-{{tag>​programmation}}+{{tag>​programmation ​BROUILLON}}
  
 ---- ----
Ligne 5: Ligne 5:
  
  
-[[wpfr>​Caml_Light|Caml Light]] est un langage fonctionnel développé par [[wpfr>​INRIA|l'​INRIA]] jusqu'​en 2002. C'est le principal langage enseigné en classe préparatoire,​ aux côtés de Pascal ​et de son successeur Objective Caml. +[[wpfr>​Caml_Light|Caml Light]] est un langage fonctionnel développé par [[wpfr>​INRIA|l'​INRIA]] jusqu'​en 2002. C'est le principal langage enseigné en classe préparatoire,​ aux côtés de Python ​et de son successeur Objective Caml.  
  
 ===== Installation ===== ===== Installation =====
 La version disponible sur le site de l'​INRIA ne fonctionne pas correctement sur Linux : elle ne charge pas la librairie "​graphics"​. Grâce au travail de [[http://​boisson.homeip.net/​clef/​ClefAgreg.html|François Boisson]] ([[http://​forum.ubuntu-fr.org/​profile.php?​id=8413 | fran.b]]) on peut enfin l'​utiliser ! La version disponible sur le site de l'​INRIA ne fonctionne pas correctement sur Linux : elle ne charge pas la librairie "​graphics"​. Grâce au travail de [[http://​boisson.homeip.net/​clef/​ClefAgreg.html|François Boisson]] ([[http://​forum.ubuntu-fr.org/​profile.php?​id=8413 | fran.b]]) on peut enfin l'​utiliser !
  
-Les paquets existent en version 0.77 
-|           ​^ ​ Dapper ​ ^ Hardy ^ Intrepid ^ Jaunty ^  
-^ 32 bits  | [[http://​boisson.homeip.net/​ubuntu/​pool/​dapper/​i386/​camllight_0.77rc1-1_i386.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​hardy/​i386/​camllight_0.77rc1-3_i386.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​intrepid/​i386/​camllight_0.77rc1-3_i386.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​jaunty/​i386/​camllight_0.77rc1-3_i386.deb |.deb]] | 
-^ 64 bits |  -  | [[http://​boisson.homeip.net/​ubuntu/​pool/​hardy/​amd64/​camllight_0.77rc1-3_amd64.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​intrepid/​amd64/​camllight_0.77rc1-3_amd64.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​jaunty/​amd64/​camllight_0.77rc1-3_amd64.deb|.deb]] | 
  
-en version 0.80 (pour Hardy et Intrepid) et 0.81 ou 0.81-1 pour les suivants 
-|         ^ Hardy ^ Intrepid ^ Jaunty ^ Karmic ^ Lucid ^ Maverick ^ Natty ^ Oneiric ^ Precise ^ Quantal ^ Raring ^ 
-^ 32 bits | [[http://​boisson.homeip.net/​ubuntu/​pool/​karmic/​i386/​camllight_0.81_i386.deb |.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​intrepid/​i386/​camllight_0.80_i386.deb |.deb]] ​ |  [[http://​boisson.homeip.net/​ubuntu/​pool/​jaunty/​i386/​camllight_0.81_i386.deb |.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​karmic/​i386/​camllight_0.81_i386.deb |.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​lucid/​i386/​camllight_0.81-1_i386.deb | .deb ]]  | [[http://​boisson.homeip.net/​ubuntu/​pool/​maverick/​i386/​camllight_0.81-1_i386.deb | .deb ]]| [[http://​boisson.homeip.net/​ubuntu/​pool/​natty/​i386/​camllight_0.81-1_i386.deb | .deb ]]|[[http://​boisson.homeip.net/​ubuntu/​pool/​oneiric/​i386/​camllight_0.81-1_i386.deb | .deb ]]|[[http://​boisson.homeip.net/​ubuntu/​pool/​precise/​i386/​camllight_0.81-1_i386.deb | .deb ]]|[[http://​boisson.homeip.net/​ubuntu/​pool/​quantal/​i386/​camllight_0.81-2_i386.deb | .deb ]]|[[http://​boisson.homeip.net/​depot/​pool/​raring/​i386/​camllight_0.81-2_i386.deb | .deb ]]| 
-^ 64 bits | [[http://​boisson.homeip.net/​ubuntu/​pool/​hardy/​amd64/​camllight_0.81_amd64.deb|.deb]] ​ |  [[http://​boisson.homeip.net/​ubuntu/​pool/​intrepid/​amd64/​camllight_0.80_amd64.deb|.deb]] |  [[http://​boisson.homeip.net/​ubuntu/​pool/​jaunty/​amd64/​camllight_0.81_amd64.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​karmic/​amd64/​camllight_0.81_amd64.deb|.deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​lucid/​amd64/​camllight_0.81-1_amd64.deb | .deb]] | [[http://​boisson.homeip.net/​ubuntu/​pool/​maverick/​amd64/​camllight_0.81-1_amd64.deb | .deb]]| [[http://​boisson.homeip.net/​ubuntu/​pool/​natty/​amd64/​camllight_0.81-1_amd64.deb | .deb]]| [[http://​boisson.homeip.net/​ubuntu/​pool/​oneiric/​amd64/​camllight_0.81-1_amd64.deb | .deb]]| [[http://​boisson.homeip.net/​ubuntu/​pool/​precise/​amd64/​camllight_0.81-2_amd64.deb | .deb]]| [[http://​boisson.homeip.net/​ubuntu/​pool/​quantal/​amd64/​camllight_0.81-2_amd64.deb | .deb]]| [[http://​boisson.homeip.net/​depot/​pool/​raring/​amd64/​camllight_0.81-2_amd64.deb | .deb]]| 
  
 +la version est la 0.82-5 avec l'​utilisation du paquet [[http://​boisson.homeip.net/​depot/​pool/​trusty/​amd64/​camltuareg-mode_2.0.6-3_all.deb|camltuareg-mode]] (dérivé du mode tuareg de ocaml):
  
  
-Ces paquets contiennent le mode tuareg **pour emacs**Il est préférable de l'​installer avant **[[apt>​emacs]]**+| ^ Xenial ^Bionic ^ 
 +^ 32 bits|[[http://​boisson.homeip.net/​depot/​pool/​xenial/​i386/​camllight_0.82-6_i386.deb | .deb ]]|[[http://​boisson.homeip.net/​depot/​pool/​bionic/​i386/​camllight_0.82-6.1_i386.deb | .deb ]]| 
 +^ 64 bits|[[http://​boisson.homeip.net/​depot/​pool/​xenial/​amd64/​camllight_0.82-6_amd64.deb | .deb]]|[[http://​boisson.homeip.net/​depot/​pool/​bionic/​amd64/​camllight_0.82-6.1_amd64.deb | .deb ]]|
  
-La version 0.81 corrige entre autres un bug entraînant un segfault dans la librairie graphique pour la fonction text_size. +À partir de la version 0.82-4 (nécessaire pour trusty), le passage à emacs24 a rendu nécessaire le mode tuareg d'​ocaml et donc l'​installation ​de ce mode dans une version dédiée fournie par le paquet [[http://​boisson.homeip.net/​depot/​pool/​trusty/​amd64/​camltuareg-mode_2.0.6-3_all.deb|camltuareg-mode]] (pour donc camllight ​version ​0.82-4 et plus)
-La version 0.81-1 contient un mode «toplevel» caml_all permettant ​de disposer en mode interactif des librairies libunix, libnum et libgraph en même temps (sur une suggestion de Dang Nguyen Bac)Cette version ​est disponible sous lucid, maverick et suivante.+
  
-Il peuvent aussi s'​installer par apt-get via le dépôt ​non signé suivant+Il peuvent aussi s'​installer par apt-get via le dépôt ​suivand:
  
-<​file>​deb http://​boisson.homeip.net/​ubuntuhardy divers</​file>​+<​file>​deb http://​boisson.homeip.net/​depottrusty ​divers</​file>​ 
 +**NB :** Remplacez "​trusty",​ par la version que vous utilisez.
  
-ou le dépot signé +__La signature ​du dépot ​s'​obtient par__ 
- +<​code>​gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF</​code>​  
-<​file>​deb http://​boisson.homeip.net/​depot/​ quantal divers</​file>​ +qui récupère la clef sur le serveur de clef et :
- +
-NB : Remplacez "​hardy"​ ou "​quantal",​ par la version que vous utilisez. +
- +
-__La signature s'​obtient par__  +
-<​code>​gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF</​code>​ +
-qui récupère la clef sur le serveur de clef et+
 <​code>​gpg -a --export D78A5C23CEA8D8FF > /​tmp/​clef.txt</​code>​ <​code>​gpg -a --export D78A5C23CEA8D8FF > /​tmp/​clef.txt</​code>​
-puis sous root+puis sous root :
 <​code>​apt-key add /​tmp/​clef.txt</​code>​ <​code>​apt-key add /​tmp/​clef.txt</​code>​
- +**NB :** **Remplacez** **D78A5C23CEA8D8FF**par ​ **416D3F7C** pour les versions artful et plus.
- +
-<note tip>​Pensez à installer le paquet tk8.5 dont dépend camllight ​**avant** de lancer l'​installation du .deb fourni ici. Cela évite d'​éventuelles dépendances non résolues. Faites alors: ''​sudo apt-get install tk8.5''​ +
-</​note>​ +
 ===== Utilisation avec la librairie "​graphics"​===== ===== Utilisation avec la librairie "​graphics"​=====
  
-Pour lancer ​caml avec la librairie "​graphics",​ il faut lancer:+Pour lancer ​Caml avec la librairie "​graphics",​ il faut lancer :
  
-<​code>​camllight camlgraph</​code>​ ou bien plus simplement avec la version 0.81-1 
 <​code>​camllight caml_all</​code>​ qui charge toutes les extensions (camlnum, camlunix, camlgraph, etc) <​code>​camllight caml_all</​code>​ qui charge toutes les extensions (camlnum, camlunix, camlgraph, etc)
-<​note>​Si vous avez fait des installations foireuses de CaML Light précédemment,​ il se peut que vous deviez ​soit remplacer camllight par /​usr/​bin/​camllight,​ soit simplement supprimer /​usr/​local/​bin/​camllight.</​note>​+<​note>​Si vous avez fait des installations foireuses de CaML Light précédemment,​ il se peut que vous devez soit remplacer camllight par /​usr/​bin/​camllight,​ soit simplement supprimer /​usr/​local/​bin/​camllight.</​note>​
  
-Une fois lancé, il faut commencer par : +Une fois lancé, il faut commencer par :
 <​code>​load_object "​graphics";;</​code>​ <​code>​load_object "​graphics";;</​code>​
  
-et enfin le fameux+et enfin le fameux ​:
 <​code>#​open "​graphics";;</​code>​ <​code>#​open "​graphics";;</​code>​
  
-autre particularité pour lancer une fenêtre il faut désormais taper : +autre particularité pour lancer une fenêtre il faut désormais taper :
 <​code>​open_graph " 800x600";;</​code>​ <​code>​open_graph " 800x600";;</​code>​
  
-Surtout ne pas oublier l'​espace après les premiers guillemets!+Surtout ne pas oublier l'​espace après les premiers guillemets ​si vous utilisez une version inférieur à la 0.82-4 comprise, ce bug est corrigé pour la version 0.82-5. [ **Remarque:​** Indiquez moi ce genre d'​erreur,​ parfois elle se corrige simplement (F.Boisson) ]
  
 Voilà vous êtes équipé pour programmer en CaML!! Voilà vous êtes équipé pour programmer en CaML!!
Ligne 82: Ligne 67:
  
 <​code>​camlc -custom unix.zo graphics.zo ​ -lunix -lgraph -ccopt -L/​usr/​X11R6/​lib -lX11 -o toto toto.ml</​code>​ <​code>​camlc -custom unix.zo graphics.zo ​ -lunix -lgraph -ccopt -L/​usr/​X11R6/​lib -lX11 -o toto toto.ml</​code>​
 +
 +Remarque : il est nécéssaire de charger le fichier unix.zo et d'​utiliser l'​option -lunix même si vous n'​utilisez pas la librairie "​unix"​ explicitement,​ car "​graphics"​ l'​utilise en interne.
  
  
 ===== Editeur de texte avec caml light ===== ===== Editeur de texte avec caml light =====
 On peut utiliser principalement deux éditeurs : [[Gedit]] et [[Emacs]] On peut utiliser principalement deux éditeurs : [[Gedit]] et [[Emacs]]
- 
  
  
Ligne 92: Ligne 78:
 ==== Gedit ==== ==== Gedit ====
  
-[[Gedit]] est un très bon éditeur de texte pour faire des programmes en Caml Light.+[[Gedit]] est un très bon éditeur de texte pour faire des programmes en CaML Light.
  
 === Coloration syntaxique === === Coloration syntaxique ===
Ligne 109: Ligne 95:
    * mettre <​code>#​!/​bin/​sh    * mettre <​code>#​!/​bin/​sh
  
-cat "​$GEDIT_CURRENT_DOCUMENT_PATH"​ | camllight</​code>​ (les guillemets permettent d'​empêcher que d'​éventuels espaces contenus dans le chemin de votre fichier actuel ​soit interprétés comme des séparateurs de commandes). +cat "​$GEDIT_CURRENT_DOCUMENT_PATH"​ | camllight</​code>​ (les guillemets permettent d'​empêcher que d'​éventuels espaces contenus dans le chemin de votre fichier actuel ​soient ​interprétés comme des séparateurs de commandes). 
-   * mettre <​code>​tee fichier_de_sauvegarde.ml | camllight</​code>​ (par exemple tee /​media/​disque_externe/​fichier.ml | camllight ou alors tee /​home/​utilisateur/​fichier.ml). Une fois cela effectué, vous pouvez rentrer votre programme en caml light et pour l'​exécuter, ​lancer ​la commande que vous avez créé ​précédemment. ​+   * mettre <​code>​tee fichier_de_sauvegarde.ml | camllight</​code>​ (par exemple tee /​media/​disque_externe/​fichier.ml | camllight ou alors tee /​home/​utilisateur/​fichier.ml). Une fois cela effectué, vous pouvez rentrer votre programme en caml light et pour l'​exécuter, ​lancez ​la commande que vous avez créée ​précédemment. ​
 <note tip>La commande "​tee"​ permet de faire une sauvegarde automatique à chaque exécution dans l'​emplacement de sauvegarde, et camllight permet d'​exécuter le programme ​ \\ Si vous ne souhaitez pas enregistrer automatiquement à chaque exécution, rentrez en commande uniquement camllight</​note>​ <note tip>La commande "​tee"​ permet de faire une sauvegarde automatique à chaque exécution dans l'​emplacement de sauvegarde, et camllight permet d'​exécuter le programme ​ \\ Si vous ne souhaitez pas enregistrer automatiquement à chaque exécution, rentrez en commande uniquement camllight</​note>​
 <note tip>Au moins depuis la version 10.10 (peut-être avant ?), il suffit de rentrer en commande "​camllight"​. Cela à l'​avantage d'​exécuter la version actuelle du programme affichée dans l'​éditeur et non la dernière version enregistrée. Pour enregistrer automatiquement le programme à chaque exécution, il suffit alors de choisir l'​option Enregistrer : Document actuel</​note>​ <note tip>Au moins depuis la version 10.10 (peut-être avant ?), il suffit de rentrer en commande "​camllight"​. Cela à l'​avantage d'​exécuter la version actuelle du programme affichée dans l'​éditeur et non la dernière version enregistrée. Pour enregistrer automatiquement le programme à chaque exécution, il suffit alors de choisir l'​option Enregistrer : Document actuel</​note>​
Ligne 126: Ligne 112:
 echo $(echo $GEDIT_CURRENT_DOCUMENT_PATH);​ echo $(echo $GEDIT_CURRENT_DOCUMENT_PATH);​
 tee $(echo $GEDIT_CURRENT_DOCUMENT_NAME)-$(date +%s).ml | camllight;</​code>​ tee $(echo $GEDIT_CURRENT_DOCUMENT_NAME)-$(date +%s).ml | camllight;</​code>​
-Cette commande fonctionne sur le même principe que la précédente,​ sauf qu'​elle enregistre chaque sauvegarde indépendamment des autres en rajoutant à chaque sauvegarde un numéro. Plus le numéro est grand, plus la sauvegarde est récente. Et en plus, cette commande supprime les sauvegardes trop anciennes( elle conserve uniquement 15 sauvegardes au maximum).+Cette commande fonctionne sur le même principe que la précédente,​ sauf qu'​elle enregistre chaque sauvegarde indépendamment des autres en rajoutant à chaque sauvegarde un numéro. Plus le numéro est grand, plus la sauvegarde est récente. Et en plus, cette commande supprime les sauvegardes trop anciennes (elle conserve uniquement 15 sauvegardes au maximum).
  
  
Ligne 132: Ligne 118:
 ==== Emacs ==== ==== Emacs ====
  
-Pour faire des programmes avec caml light, on peut aussi utiliser [[emacs]]. Le mode tuareg est installé en même temps que le paquet emacs dans une version ​adapté ​à camllight. emacs appelle par défaut «camllight camlgraph» ou «camllight caml_all» lors de l'​évaluation de la première phrase caml par Ctrl-c Ctrl-b ou Ctrl-x Ctrl-e. Le premier permet d'​avoir la librairie graphique, caml_all permet d'​avoir toutes les librairies usuelles accessibles.+Pour faire des programmes avec caml light, on peut aussi utiliser [[emacs]]. Le mode tuareg est installé en même temps que le paquet emacs dans une version ​adaptée ​à camllight. emacs appelle par défaut «camllight camlgraph» ou «camllight caml_all» lors de l'​évaluation de la première phrase caml par Ctrl-c Ctrl-b ou Ctrl-x Ctrl-e. Le premier permet d'​avoir la librairie graphique, caml_all permet d'​avoir toutes les librairies usuelles accessibles.
  
-Tuareg peut s'​installer à part dans sa forme originale mais théoriquement c'est inutile si on utilise les paquets camllight. ​Pour installer tuareg, il y a deux méthodes:+Tuareg peut s'​installer à part dans sa forme originale mais théoriquement c'est inutile si on utilise les paquets camllight ​sauf depuis trusty où le paquet camltuareg-mode est indispensable.
  
-  * Première Méthode+Pour installer tuareg, il y a trois méthodes :
  
-Installer le paquet [[apt://​tuareg-mode|tuareg-mode]] :+  * Première méthode recommandée
  
-  ​sudo apt-get install ​tuareg-mode+Installer le paquet [[apt://​camltuareg-mode|camltuareg-mode]] : 
 + 
 +  ​sudo apt-get install ​camltuareg-mode
  
 Pour l'​utiliser il suffit d'​éditer un fichier avec l'​extension .ml ou bien de faire Alt+x puis Pour l'​utiliser il suffit d'​éditer un fichier avec l'​extension .ml ou bien de faire Alt+x puis
-'' ​tuareg-mode ''​ +'' ​camltuareg-mode ''​ 
-Emacs se mettra en mode caml. Il L'​évaluation du buffer se fait par Ctrl-c, Ctrl-b. L'​évaluation de la fonction/​expression sur laquelle est le curseur se fait par Ctrl-x, Ctrl-e. Lors de la première compilation il vous sera demandé en bas de la fenêtre de renseigner la librairie, entrez ''​ocaml''​ ou ''​camllight''​ selon le langage choisi. Votre instruction sera alors compilée.+Emacs se mettra en mode caml. Il L'​évaluation du buffer se fait par Ctrl-c, Ctrl-b. L'​évaluation de la fonction/​expression sur laquelle est le curseur se fait par Ctrl-x, Ctrl-e
 + 
 +  * Deuxième méthode: utilisation du mode tuareg original. 
 + 
 +Le paquet tuareg-mode est adapté à ocaml, mais peut s'​utiliser avec camllight. Il suffit d'​installer le paquet [[apt://​camltuareg-mode|tuareg-mode]]. Lors de la première compilation il vous sera demandé en bas de la fenêtre de renseigner la librairie, entrez ''​ocaml''​ ou ''​camllight''​ selon le langage choisi. Votre instruction sera alors compilée.
  
-  * Deuxième Méthode+  * Troisième méthode (obsolète)
  
 On peut aussi installer [[http://​users.info.unicaen.fr/​~bourdon/​dochtml/​mode-caml/​| caml-mode pour emacs]]. On peut aussi installer [[http://​users.info.unicaen.fr/​~bourdon/​dochtml/​mode-caml/​| caml-mode pour emacs]].
Ligne 166: Ligne 158:
  
 Pour le lancer, il faut d'​abord le rendre exécutable en exécutant "chmod a+x vimcaml"​ dans un terminal ou en allant à l'​onglet "​permissions"​ de la fenêtre "​propriétés"​ du fichier. Le script doit impérativement être exécuté dans un terminal. Pour le lancer, il faut d'​abord le rendre exécutable en exécutant "chmod a+x vimcaml"​ dans un terminal ou en allant à l'​onglet "​permissions"​ de la fenêtre "​propriétés"​ du fichier. Le script doit impérativement être exécuté dans un terminal.
-Si vous exécutez une boucle infinie, allez dans la fenêtre de camllight et entrez ​ctrl C; vous pouvez alors continuer normalement.+Si vous exécutez une boucle infinie, allez dans la fenêtre de camllight et entrez ​Ctrl ; vous pouvez alors continuer normalement.
  
 ---- ----
  
-http://​caml.inria.fr/​caml-light/​release.fr.html+https://​caml.inria.fr/​caml-light/​release.fr.html
  
 ===== Problèmes connus ===== ===== Problèmes connus =====
Ligne 176: Ligne 168:
 Il est possible, sous Quantal (12.10) au moins, que l'​installation révèle un bug du gestionnaire de sources de logiciels, software-properties-gtk,​ dû probablement à un plantage du module utf-8. Il est possible, sous Quantal (12.10) au moins, que l'​installation révèle un bug du gestionnaire de sources de logiciels, software-properties-gtk,​ dû probablement à un plantage du module utf-8.
  
-Un post sur le forum existe sur le sujet : [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=1102821&​p=2]]+Un post sur le forum existe sur le sujet : [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=1102821&​p=2]]
  
 Rapportez-vous aux posts #29, #30 pour plus d'​infos :) Rapportez-vous aux posts #29, #30 pour plus d'​infos :)
  
 PS : Je suis encore la discussion donc n'​hésitez pas à y poser vos questions si nécessaire ;) PS : Je suis encore la discussion donc n'​hésitez pas à y poser vos questions si nécessaire ;)
  • caml_light.1366028810.txt.gz
  • Dernière modification: Le 15/04/2013, 14:26
  • par fran.b