En prépa, on n’échappe pas à Caml.

Mais si on tourne sous Linux, on n’échappe souvent pas à LinCaml non plus. Sauf que voilà, malgré tous les avantages qui viennent avec le mode interactif de ce programme (ce mode étant quasi-indispensable en prépa, puisqu’il permet d’écrire et de valider les fonctions au fur et à mesure de leur écriture), la routine d’annulation de LinCaml, le plantage systématique à l’enregistrement ont eu raison de mon usage de ce programme (ces bugs ont peut-être été corrigés depuis, ça fait déjà deux ans…); ainsi, j’ai créé LemonCaml (au départ CamlDev), un environnement d’édition Caml avec entrée interactive (Control + Enter pour soumettre le bloc en cours d’édition).

LemonCaml n’est pas là pour concurrencer d’autres éditeurs Caml, il n’est d’ailleurs pas forcément plus simple à utiliser que Wincaml ou Lincaml (si vous avez Windows, vous pouvez directement essayer pour vous en convaincre). Il a vocation à devenir un outil au service de l’élève feignant de prépa: c’est la raison pour laquelle j’y écris un module d’affichage des arbres, et dans les cartons, j’ai bien envie de le voir afficher le type des fonctions en info-bulle lorsqu’on les nomme. Cette dernière fonctionnalité requiérant la connaissance des primitives Caml que l’interpréteur a chargées, vous comprendrez aisément que les trouver ne sera pas tâche simple!

Téléchargement

Télécharger{.git .download .yellow} Télécharger{.linux .download .green} Télécharger{.linux .download .green} Télécharger{.windows .download .green} Télécharger{.windows .download .blue}

Les sources sont disponibles sur GitHub. Je vous propose également une version compilée pour Windows en téléchargement: celle-ci comprend également Caml Light 0.75 (le programme qui exécute les commandes Caml), ainsi que deux versions compilées pour Linux.

Pour ceux qui veulent directement LemonCaml, sans rien configurer, sans s’embêter, vous pouvez choisir la version avec installateur (bouton “télécharger” bleu). L’installateur fait tout (ou presque) de la configuration expliquée ci-dessous, à votre place!

ATTENTION: si vous choisissez l’installateur Windows et que vous exécutez Windows Vista ou une version ultérieure (7, 8, $j$ pour tout $j$…), vous devrez probablement exécuter le fichier d’installation en tant qu’administrateur. Un flag permet de forcer l’OS à vous poser la question, mais je ne sais pas où est ce flag, et par ailleurs, si vous installez le programme dans vos documents (idée saugrenue), l’accès administrateur n’est pas indispensable, donc je ne le force pas.

Installation

L’installation se fait de la manière suivante:

Windows Sous Windows

  • Si vous téléchargez les binaires Windows avec installateur: Vous n’avez rien à faire après avoir exécuté l’installateur. Il suffit de lancer LemonCaml.
  • Si vous téléchargez les binaires Windows sans installateur: Décompressez le fichier ZIP dans le dossier de votre choix et lancez “lemoncaml.exe”. Normalement, tout doit fonctionner. ** Attention:** si le topelvel Caml plante tout de suite après son démarrage, allez dans le dossier “caml” et renommez “CamlLightToplevel.nounix.exe” en “CamlLightToplevel.exe” (l’ancien toplevel, mettez-le où vous voulez mais sortez le du dossier “caml”…).
  • Si vous choisissez de compiler la source: je vous recommande de cross-compiler depuis Linux, ce sera certainement plus simple que d’installer le SDK de Qt à je ne sais pas combien de gigas. Si vous en diposez déjà, tant mieux, vous n’avez qu’à exécuter qmake et make dans le dossier contenant la source, comme sous Linux; en revanche, vous devrez trouver un toplevel Caml précompilé (pour en trouver un, rendez-vous par exemple chez Jean Mouric). Je n’ai pas fait de script qui génère un toplevel sous Windows, j’en suis navré. Pour installer LemonCaml une fois compilé: si vous avez réussi à compiler la source et à trouver un toplevel, ne vous reste plus qu’à copier les DLLs de Qt ainsi que l’exécutable de LemonCaml où vous le désirez. Pour qu’ensuite, tous les utilisateurs puissent ouvrir LemonCaml sans avoir à le configurer (pour l’emplacement des fichiers comme le toplevel), je vous propose de le configurer au niveau “système”, en créant la clef de registre HKLM\Software\cferr\LemonCaml et les valeurs qui suivent dans cette clef:
    • camlPath: valeur chaîne, contient le chemin absolu vers le toplevel Caml, entouré de guillemets. Les guillemets ne sont pas nécessaires si le chemin ne contient pas d’espace (ou à l’appréciation du shell de Windows que je ne connais pas trop). Valeur en général:

      "C:\Program Files\LemonCaml\lemoncaml.exe"
      
    • camlArgs: valeur chaîne, contient les arguments à passer au toplevel Caml. Valeur en général:

      -stdlib "C:\Program Files\LemonCaml\caml\lib"
      
    • keywordsPath: valeur chaîne, contient le chemin absolu vers le fichier des mots-clés à mettre en valeur pour la coloration syntaxique. Valeur en général:

      C:\Program Files\LemonCaml\keywords
      
    • treeModelsPath: valeur chaîne, contient le chemin vers les modèles d’arbres pour le dessin graphique. Valeur en général:

      C:\Program Files\LemonCaml\gentree (mettez un antislash après le chemin, je crois que je ne le rajoute pas automatiquement et vous pourrez vous retrouver avec un "file not found" si vous l'omettez, alors que les modèles sont bien présents; un antislash de trop n'empêche pas le fichier d'ere chargé, en revanche).
      
    • setupPath: valeur chaîne, contient le dossier dans lequel se trouvent LemonCaml ainsi que ses traductions. Valeur en général:

      C:\Program Files\LemonCaml (et là, je suis sûr que je ne rajoute pas l'antislash automatiquement, donc n'oubliez pas de le mettre). Si vous omettez cette valeur, alors vous devrez utiliser LemonCaml en anglais, ce qui est un moindre mal pour certains, mais bien davantage pour d'autres.
      

LinuxSous Linux

  • Si vous téléchargez les binaires Linux, assurez-vous de disposer de Qt4. Exécutez alors le script “setupbin.sh” qui copiera les binaires où il faut, à l’aide de la commande suivante:

    cd (dossier où vous avez extrait LemonCaml)
    sudo ./setupbin.sh
    
  • Si vous choisissez de compiler la source: Téléchargez le code par exemple avec: git clone https://github.com/cferr/lemoncaml

    Assurez-vous d’avoir installé les librairies libX11 et libpthread ainsi que leurs fichiers de développement (que les distributions fournissent parfois sous le nom de libX11-dev, ou libX11-devel, libpthread-dev ou libpthread-devel…). Sous certaines distributions (Arch Linux par exemple), les fichiers de développement sont inclus avec l’ensemble des paquets installés; sous d’autres (Ubuntu, Mandriva…), il faut installer les paquets de développement. Installez également le compilateur (gcc), ainsi que les outils de compilation (binutils). Installez enfin les fichiers de développement de Qt (Qt4 ou Qt5: les noms peuvent être qt4-devel, qt5-devel, libqt4-dev, …). Ceci installé, vous pouvez alors exécuter:

    cd (dossier où vous avez téléchargé LemonCaml)
    ./fullsetup.sh
    
    ce qui compilera et installera LemonCaml.    **Si le message suivant s'affiche lorsque vous exécutez fullsetup.sh:**
    
    /lib/cpp does not exist, but is needed to compile Caml Light.
       If gcc is not installed on your system, you are strongly advised to
       install it before running this script again.
       If gcc is installed on your system and you still see this error
       (eg. on Arch Linux), then the C preprocessor (cpp) is usually found
       elsewhere in the PATH (usually /usr/lib or /usr/bin).
       Try to look for it in the following locations, then symlink it to
       /lib/cpp : 
    
    alors vous devez soit installer le compilateur gcc (si ce n'est déjà fait), soit créer un lien symbolique vers le préprocesseur C dans /lib/cpp. Sous Arch Linux, celui-ci se trouve dans /usr/bin, donc vous pouvez exécuter la commande suivante:
    sudo ln -s /usr/bin/cpp /lib/cpp
    

Pour lancer LemonCaml sous Linux, il vous suffira alors d’entrer la commande “lemoncaml”.

Sous Mac OS

Débrouillez-vous, ou installez Linux sur votre Mac. Si vous parvenez à compiler LemonCaml et que vous avez un toplevel Caml, alors le menu de configuration de LemonCaml vous permettra de lier les deux. Je ne fournirai pas de version précompilée de LemonCaml pour Mac.

Désinstallation

AVERTISSEMENT PRÉALABLE: je ne suis pas responsable de ce que vous allez faire en suivant ces procédures, et donc pas non plus des conséquences que cela pourrait avoir sur votre système!

Sous Windows, si vous avez utilisé l’installateur, alors vous n’avez qu’à lancer la désinstallation par le menu “démarrer” (le lien s’appelle “Uninstall LemonCaml”).Si vous avez téléchargé le fichier ZIP: vous pouvez supprimer le dossier où vous avez extrait LemonCaml. Vous pourrez ensuite supprimer les clefs de registre que LemonCaml aura éventuellement créées:

  • HKEY_LOCAL_MACHINE\Software\cferr\LemonCaml
  • HKEY_CURRENT_USER\Software\cferr\LemonCaml

Sous Linux, vous pouvez supprimer les fichiers qui suivent:

  • /etc/lemoncaml/* (tous les fichiers contenus dans ce dossier)
  • /etc/xdg/cferr/LemonCaml.conf
  • /usr/bin/lemoncaml

Utilisation

Pour envoyer des commandes à Caml, placez-vous avant le double point-virgule du bloc d’instructions à envoyer, puis appuyez sur Control+Entrée (ou cliquez sur la petite flèche verte dans la barre d’outils).

Fonctionnalités

LemonCaml est capable de colorer la syntaxe de votre code. Cette option est activée par défaut, mais elle peut être désactivée en cliquant sur le “T” de la barre d’outils, ou en allant dans le menu Edit puis en déselectionnant “Enable syntax highlighting”.

LemonCaml sait faire l’indentation du code! Vous avez à ce sujet deux possibilités:

  • Soit vous entrez directement votre code, en faisant pas ou peu d’indentation (ce que je ne recommande pas, mais imaginons), ou en ne sachant plus où vous en êtes dans l’indentation. Alors, une fois votre code tapé, appuyez sur Control+W ou faites Edit -> Indent code, et votre code sera indenté comme il faut.
  • Soit vous voulez que le code soit indenté au fur et à mesure que vous tapez: à ce moment-là, cliquez sur la flèche suivant le curseur dans la barre d’outils, ou faites Edit -> Indent code while typing. L’indentation du code se fera alors automatiquement, et la désindentation aussi! Pour ne pas perturber le fonctionnement de cet engin, ne désindentez pas vos “end”, parenthèses fermantes, “done”: LemonCaml le fait tout seul après le retour à la ligne suivant ces termes-clefs.

LemonCaml est capable de représenter graphiquement des arbres généraux, comme sur l’image qui suit.

Tree

Cette fonctionnalité étant plus ou moins expérimentale, elle n’est pas activée par défaut. Vous devrez aller dans Caml -> Settings et cocher “Draw graphical trees”, puis valider avec OK pour activer cette fonction.

Le fichier print_arbre.ml (que l’on trouve aussi dans les sources de LemonCaml sous des moutures différentes) contient des définitions de fonctions permettant à LemonCaml de faire de jolis dessins. Essayez!

Capture d’écran

Capture réalisée sous Manjaro Linux, avec l’environnement de bureau KDE4 (QtCurve):

Lemoncaml

Capture réalisée sous Windows 7:

Lemoncaml

Problèmes?

Si vous rencontrez un problème avec LemonCaml dont la solution n’est pas ici, contactez-moi!

À propos du nom “LemonCaml”…

À l’origine, ce programme s’appelait “CamlDev” (d’ailleurs, le nom est resté sur Github). Mais c’est en découvrant en sup (merci Alexandre au passage) le dessin animé “Adventure Time” et son Lemongrab, monté sur son Lemon Camel, que j’ai eu l’idée de donner ce nom plus original au programme…