CINXE.COM
caml_light [Wiki ubuntu-fr]
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr" class="no-js"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>caml_light [Wiki ubuntu-fr]</title> <script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/lib/tpl/bootstrap3/images/favicon.ico" /> <link rel="apple-touch-icon" href="/lib/tpl/bootstrap3/images/apple-touch-icon.png" /> <meta name="generator" content="DokuWiki"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="programmation,brouillon"/> <link type="text/css" rel="stylesheet" href="/lib/tpl/bootstrap3/assets/fonts/united.fonts.css"/> <link type="text/css" rel="stylesheet" href="/lib/tpl/bootstrap3/assets/font-awesome/css/font-awesome.min.css"/> <link type="text/css" rel="stylesheet" href="/lib/tpl/bootstrap3/assets/bootstrap/united/bootstrap.min.css"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="Wiki ubuntu-fr"/> <link rel="start" href="/"/> <link rel="contents" href="/caml_light?do=index" title="Plan du site"/> <link rel="manifest" href="/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Derniers changements" href="/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Catégorie courante" href="/feed.php?mode=list&ns="/> <link rel="edit" title="Modifier cette page" href="/caml_light?do=edit"/> <link rel="alternate" type="text/html" title="HTML brut" href="/_export/xhtml/caml_light"/> <link rel="alternate" type="text/plain" title="Wiki balise" href="/_export/raw/caml_light"/> <link rel="canonical" href="http://doc.ubuntu-fr.org/caml_light"/> <link rel="stylesheet" type="text/css" href="/lib/exe/css.php?t=bootstrap3&tseed=c9a751d8b3d6bbfff424363cfe0bdea6"/> <!--[if gte IE 9]><!--> <script type="text/javascript">/*<![CDATA[*/var NS='';var JSINFO = {"bootstrap3":{"mode":"show","toc":[],"config":{"collapsibleSections":0,"fixedTopNavbar":1,"showSemanticPopup":0,"sidebarOnNavbar":0,"tagsOnTop":1,"tocAffix":1,"tocCollapseOnScroll":1,"tocCollapsed":0,"tocLayout":"default","useAnchorJS":1}},"id":"caml_light","namespace":"","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0}; /*!]]>*/</script> <script type="text/javascript" charset="utf-8" src="/lib/exe/jquery.php?tseed=23f888679b4f1dc26eef34902aca964f"></script> <script type="text/javascript" charset="utf-8" src="/lib/exe/js.php?t=bootstrap3&tseed=c9a751d8b3d6bbfff424363cfe0bdea6"></script> <script type="text/javascript" src="/lib/tpl/bootstrap3/assets/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript" src="/lib/tpl/bootstrap3/assets/anchorjs/anchor.min.js"></script> <script type="text/javascript" src="/lib/tpl/bootstrap3/assets/typeahead/bootstrap3-typeahead.min.js"></script> <!--<![endif]--> <style type="text/css">@media screen { body { margin-top: 70px; } #dw__toc.affix { top: 60px; position: fixed !important; } #dw__toc .nav .nav .nav { display: none; } }</style> <!--[if lt IE 9]> <script type="text/javascript" src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script type="text/javascript" src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body class="united dokuwiki mode_show tpl_bootstrap3 dw-page-on-panel" data-page-id="caml_light"> <header id="dokuwiki__header" class="dokuwiki container"> <nav id="dw__navbar" class="navbar navbar-fixed-top navbar-default" role="navigation"> <div class="container"> <div class="navbar-header"> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="/accueil" accesskey="h" title="[H]" class="navbar-brand"><span class="uf uf-cof" id="dw__accueil" style="font-size: 35px;" ></span> <span id="dw__title" style="margin-top:-5px">Wiki ubuntu-fr<span id="dw__tagline">La Documentation francophone</span></span></a> </div> <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li> <a href="//ubuntu-fr.org/" ><i class="fa fa-2x fa-fw fa-home"></i><span> Accueil</span></a> </li> <li> <a href="//forum.ubuntu-fr.org/" ><i class="fa fa-2x fa-fw fa-comments"></i><span> Forum</span></a> </li> <li> <a href="//planet.ubuntu-fr.org/" ><i class="fa fa-2x fa-fw fa-globe"></i><span> Planet</span></a> </li> </ul> <div class="navbar-right" id="dw__navbar_items"> <form action="//forum.ubuntu-fr.org/search_ubuntufr.php" accept-charset="utf-8" class="navbar-form navbar-left search" id="dw__search" method="get" role="search"><div class="no"><input id="qsearch" autocomplete="off" type="search" placeholder="Rechercher" accesskey="f" name="q" class="form-control" title="[F]" /><button type="submit" title="Rechercher"><i class="fa fa-fw fa-search"></i></button><input type="hidden" name="do" value="search" /><input type="hidden" name="tsearch" value="wiki" /></div></form> <ul class="nav navbar-nav dw-action-icon" id="dw__tools"> <li class="dropdown"> <a href="" class="dropdown-toggle" data-target="#" data-toggle="dropdown" title="" role="button" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-2x fa-fw fa-wrench"></i> <span class="hidden-lg hidden-md hidden-sm">Outils</span> <span class="caret"></span> </a> <ul class="dropdown-menu tools" role="menu"> <li class="dropdown-header"> <i class="fa fa-fw fa-cubes"></i> Outils du site </li> <li><a href="/caml_light?do=recent" class="action recent" accesskey="r" rel="nofollow" title="Derniers changements [R]">Derniers changements</a></li><li><a href="/caml_light?do=media&ns=" class="action media" rel="nofollow" title="Gestionnaire Multimédia">Gestionnaire Multimédia</a></li><li><a href="/caml_light?do=index" class="action index" accesskey="x" rel="nofollow" title="Plan du site [X]">Plan du site</a></li> <li class="divider" role="separator"></li> <li class="dropdown-header"> <i class="fa fa-fw fa-file"></i> Outils de la page </li> <li><a href="/caml_light?do=edit" class="action edit" accesskey="e" rel="nofollow" title="Modifier cette page [E]">Modifier cette page</a></li><li><a href="/caml_light?do=revisions" class="action revs" accesskey="o" rel="nofollow" title="Anciennes révisions [O]">Anciennes révisions</a></li><li><a href="/caml_light?do=backlink" class="action backlink" rel="nofollow" title="Liens de retour">Liens de retour</a></li><li><a href="#dokuwiki__top" class="action top" accesskey="t" rel="nofollow" title="Haut de page [T]">Haut de page</a></li> </ul> </li> </ul> <ul class="nav navbar-nav"> <li> <span class="dw__actions dw-action-icon"> <a href="/caml_light?do=login&sectok=" class="action btn btn-default navbar-btn login" rel="nofollow" title="S'identifier"><span class="">S'identifier</span></a> </span> </li> </ul> </div> </div> </div> </nav> </header> <div id="dokuwiki__top" class="dokuwiki container"> <div id="dokuwiki__pageheader"> <p class="pageId text-right small"> <span class="label label-primary">caml_light</span> </p> <div id="dw__msgarea" class="small"> </div> </div> <main class="main row" role="main"> <article id="dokuwiki__content" class="container" itemscope itemtype="http://schema.org/Article" itemref="dw__license"> <nav id="dw__pagetools" class="hidden-print"> <div class="tools panel panel-default pull-right "> <ul class="nav nav-stacked nav-pills"> <li><a href="/caml_light?do=edit" class="action text-muted edit" accesskey="e" rel="nofollow" title="Modifier cette page [E]"><i class="fa fa-fw fa-pencil-square-o"></i><span class="sr-only"> Modifier cette page</span></a></li><li><a href="/caml_light?do=revisions" class="action text-muted revs" accesskey="o" rel="nofollow" title="Anciennes révisions [O]"><i class="fa fa-fw fa-clock-o"></i><span class="sr-only"> </span></a></li><li><a href="/caml_light?do=backlink" class="action text-muted backlink" rel="nofollow" title="Liens de retour"><i class="fa fa-fw fa-link"></i><span class="sr-only"> Liens de retour</span></a></li> </ul> </div> </nav> <div class="panel panel-default" itemprop="articleBody"> <div class="page panel-body"> <div class="dw-content-page "><div class="dw-toc hidden-print"><script>JSINFO.bootstrap3.toc = [{"link":"#installation","title":"Installation","level":1},{"link":"#utilisation_avec_la_librairie_graphics","title":"Utilisation avec la librairie \"graphics\"","level":1},{"link":"#exemple","title":"Exemple","level":2},{"link":"#editeur_de_texte_avec_caml_light","title":"Editeur de texte avec caml light","level":1},{"link":"#gedit","title":"Gedit","level":2},{"link":"#emacs","title":"Emacs","level":2},{"link":"#vim","title":"Vim","level":2},{"link":"#problemes_connus","title":"Probl\u00e8mes connus","level":1},{"link":"#a_l_installation","title":"\u00c0 l'installation","level":2}];</script> <!-- TOC START --> <nav id="dw__toc" role="navigation" class="toc-panel panel panel-default small"> <h6 data-toggle="collapse" data-target="#dw__toc .toc-body" title="Table des matières" class="panel-heading toc-title"><i class="fa fa-fw fa-th-list"></i> <span>Table des matières</span> <i class="caret"></i></h6> <div class="panel-body toc-body collapse in"> <ul class="nav toc"> <li class="level1"><a href="#installation">Installation</a></li> <li class="level1"><a href="#utilisation_avec_la_librairie_graphics">Utilisation avec la librairie "graphics"</a> <ul class="nav toc"> <li class="level2"><a href="#exemple">Exemple</a></li> </ul> </li> <li class="level1"><a href="#editeur_de_texte_avec_caml_light">Editeur de texte avec caml light</a> <ul class="nav toc"> <li class="level2"><a href="#gedit">Gedit</a></li> <li class="level2"><a href="#emacs">Emacs</a></li> <li class="level2"><a href="#vim">Vim</a></li> </ul> </li> <li class="level1"><a href="#problemes_connus">Problèmes connus</a> <ul class="nav toc"> <li class="level2"><a href="#a_l_installation">À l'installation</a></li> </ul></li> </ul> </div> </nav> <!-- TOC END --> </div><!-- CONTENT --><div class="dw-content"><div class="notetag">Cette page est en cours de rédaction.<br /> <a href="/wiki/participer_wiki">Apportez votre aide…</a> </div> <div class="tags"><span> <a href="/programmation" class="wikilink1" title="programmation" rel="tag">programmation</a>, <a href="/brouillon" class="wikilink1" title="brouillon" rel="tag">BROUILLON</a> </span></div> <hr /> <h1 class="sectionedit1 page-header" id="caml_light">Caml Light</h1> <div class="level1"> <p> <a href="https://fr.wikipedia.org/wiki/Caml_Light" class="interwiki iw_wpfr" title="https://fr.wikipedia.org/wiki/Caml_Light">Caml Light</a> est un langage fonctionnel développé par <a href="https://fr.wikipedia.org/wiki/INRIA" class="interwiki iw_wpfr" title="https://fr.wikipedia.org/wiki/INRIA">l'INRIA</a> 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. </p> </div> <div class='secedit editbutton_section editbutton_1'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Caml Light] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="caml_light" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="39-301" /><button type="submit" title="Caml Light" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h2 class="sectionedit2 page-header" id="installation">Installation</h2> <div class="level2"> <p> 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 <a href="http://boisson.homeip.net/clef/ClefAgreg.html" class="urlextern" title="http://boisson.homeip.net/clef/ClefAgreg.html" rel="nofollow">François Boisson</a> (<a href="http://forum.ubuntu-fr.org/profile.php?id=8413" class="urlextern" title="http://forum.ubuntu-fr.org/profile.php?id=8413" rel="nofollow"> fran.b</a>) on peut enfin l'utiliser ! </p> <p> la version est la 0.82-5 avec l'utilisation du paquet <a href="http://boisson.homeip.net/depot/pool/trusty/amd64/camltuareg-mode_2.0.6-3_all.deb" class="urlextern" title="http://boisson.homeip.net/depot/pool/trusty/amd64/camltuareg-mode_2.0.6-3_all.deb" rel="nofollow">camltuareg-mode</a> (dérivé du mode tuareg de ocaml): </p> <div class="table-responsive"><table class="inline table table-striped table-condensed"> <thead> <tr class="row0"> <td class="col0"> </td><th class="col1"> Xenial </th><th class="col2">Bionic </th> </tr> </thead> <tr class="row1"> <th class="col0"> 32 bits</th><td class="col1"><a href="http://boisson.homeip.net/depot/pool/xenial/i386/camllight_0.82-6_i386.deb" class="urlextern" title="http://boisson.homeip.net/depot/pool/xenial/i386/camllight_0.82-6_i386.deb" rel="nofollow"> .deb </a></td><td class="col2"><a href="http://boisson.homeip.net/depot/pool/bionic/i386/camllight_0.82-6.1_i386.deb" class="urlextern" title="http://boisson.homeip.net/depot/pool/bionic/i386/camllight_0.82-6.1_i386.deb" rel="nofollow"> .deb </a></td> </tr> <tr class="row2"> <th class="col0"> 64 bits</th><td class="col1"><a href="http://boisson.homeip.net/depot/pool/xenial/amd64/camllight_0.82-6_amd64.deb" class="urlextern" title="http://boisson.homeip.net/depot/pool/xenial/amd64/camllight_0.82-6_amd64.deb" rel="nofollow"> .deb</a></td><td class="col2"><a href="http://boisson.homeip.net/depot/pool/bionic/amd64/camllight_0.82-6.1_amd64.deb" class="urlextern" title="http://boisson.homeip.net/depot/pool/bionic/amd64/camllight_0.82-6.1_amd64.deb" rel="nofollow"> .deb </a></td> </tr> </table></div> <p> À 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 <a href="http://boisson.homeip.net/depot/pool/trusty/amd64/camltuareg-mode_2.0.6-3_all.deb" class="urlextern" title="http://boisson.homeip.net/depot/pool/trusty/amd64/camltuareg-mode_2.0.6-3_all.deb" rel="nofollow">camltuareg-mode</a> (pour donc camllight version 0.82-4 et plus) </p> <p> Il peuvent aussi s'installer par apt-get via le dépôt suivand: </p> <pre class="file">deb http://boisson.homeip.net/depot/ trusty divers</pre> <p> <strong>NB :</strong> Remplacez "trusty", par la version que vous utilisez. </p> <p> <em class="u">La signature du dépot s'obtient par</em> </p> <pre class="code">gpg --keyserver pgpkeys.mit.edu --recv-key D78A5C23CEA8D8FF</pre> <p> qui récupère la clef sur le serveur de clef et : </p> <pre class="code">gpg -a --export D78A5C23CEA8D8FF > /tmp/clef.txt</pre> <p> puis sous root : </p> <pre class="code">apt-key add /tmp/clef.txt</pre> <p> <strong>NB :</strong> <strong>Remplacez</strong> <strong>D78A5C23CEA8D8FF</strong>par <strong>416D3F7C</strong> pour les versions artful et plus. </p> </div> <div class='secedit editbutton_section editbutton_2'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Installation] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="installation" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="302-2158" /><button type="submit" title="Installation" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h2 class="sectionedit4 page-header" id="utilisation_avec_la_librairie_graphics">Utilisation avec la librairie "graphics"</h2> <div class="level2"> <p> Pour lancer Caml avec la librairie "graphics", il faut lancer : </p> <pre class="code">camllight caml_all</pre> <p> qui charge toutes les extensions (camlnum, camlunix, camlgraph, etc) </p> <div class="noteclassic">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. </div> <p> Une fois lancé, il faut commencer par : </p> <pre class="code">load_object "graphics";;</pre> <p> et enfin le fameux : </p> <pre class="code">#open "graphics";;</pre> <p> autre particularité pour lancer une fenêtre il faut désormais taper : </p> <pre class="code">open_graph " 800x600";;</pre> <p> 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. [ <strong>Remarque:</strong> Indiquez moi ce genre d'erreur, parfois elle se corrige simplement (F.Boisson) ] </p> <p> Voilà vous êtes équipé pour programmer en CaML!! </p> </div> <div class='secedit editbutton_section editbutton_4'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Utilisation avec la librairie "graphics"] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="utilisation_avec_la_librairie_graphics" /><input type="hidden" name="codeblockOffset" value="4" /><input type="hidden" name="range" value="2159-3163" /><button type="submit" title="Utilisation avec la librairie "graphics"" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h3 class="sectionedit5" id="exemple">Exemple</h3> <div class="level3"> <pre class="code">load_object "graphics";; #open "graphics";; open_graph " 100x50";; moveto 15 20;; draw_string "!!BONJOUR!!";;</pre> <p> Une commande pour compiler le fichier toto.ml </p> <pre class="code">camlc -custom unix.zo graphics.zo -lunix -lgraph -ccopt -L/usr/X11R6/lib -lX11 -o toto toto.ml</pre> <p> 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. </p> </div> <div class='secedit editbutton_section editbutton_5'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Exemple] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="exemple" /><input type="hidden" name="codeblockOffset" value="8" /><input type="hidden" name="range" value="3164-3657" /><button type="submit" title="Exemple" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h2 class="sectionedit6 page-header" id="editeur_de_texte_avec_caml_light">Editeur de texte avec caml light</h2> <div class="level2"> <p> On peut utiliser principalement deux éditeurs : <a href="/gedit" class="wikilink1" title="gedit">Gedit</a> et <a href="/emacs" class="wikilink1" title="emacs">Emacs</a> </p> </div> <div class='secedit editbutton_section editbutton_6'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Editeur de texte avec caml light] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="editeur_de_texte_avec_caml_light" /><input type="hidden" name="codeblockOffset" value="10" /><input type="hidden" name="range" value="3658-3777" /><button type="submit" title="Editeur de texte avec caml light" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h3 class="sectionedit7" id="gedit">Gedit</h3> <div class="level3"> <p> <a href="/gedit" class="wikilink1" title="gedit">Gedit</a> est un très bon éditeur de texte pour faire des programmes en CaML Light. </p> </div> <h4 id="coloration_syntaxique">Coloration syntaxique</h4> <div class="level4"> <p> Pour colorier le texte vous pouvez aller dans <strong>Affichage > Mode de coloration > Source > Objective Caml</strong> </p> <div class="notetip"> Si vous enregistrez votre fichier avec l'extension .ml et que vous l'ouvrez ensuite avec <a href="/gedit" class="wikilink1" title="gedit">Gedit</a>, la couleur sera automatiquement activée </div> </div> <h4 id="lancer_vos_programmes_caml_dans_un_panneau_inferieur">Lancer vos programmes Caml dans un panneau inférieur</h4> <div class="level4"> <div class="noteimportant">Le mode interactif ne marche pas avec <a href="/gedit" class="wikilink1" title="gedit">Gedit</a>, si vous voulez faire de l'interactif, utilisez <a href="/emacs" class="wikilink1" title="emacs">emacs</a> (voir <a href="/caml_light#emacs" class="wikilink1 curid" title="caml_light" data-curid="true">plus bas</a>). </div><ol class=" fix-media-list-overlap"> <li class="level1"><div class="li"> Commencez par activer le greffon via <strong>Édition</strong> > <strong>Préférences</strong> > onglet <strong>Greffons</strong> > Cocher <strong>Outils externes</strong>.</div> </li> <li class="level1"><div class="li"> Allez ensuite, dans <strong>Outils</strong> > <strong>Gérer les outils externes</strong>. Faites "<strong>Nouveau</strong>", et rentrez ce que vous voulez en nom, description et raccourci clavier. En "<strong>Entrée</strong>" (ou "<strong>Input</strong>"), choisissez "<strong>Document actuel</strong>". En "<strong>Sortie</strong>" (ou "<strong>Output</strong>"), choisissez "<strong>Afficher dans le panneau inférieur</strong>". En "<strong>Applicability</strong>", choisissez "<strong>Tous les documents</strong>".</div> </li> <li class="level1"><div class="li"> En commande, trois possibilités : </div> </li> </ol> <ul class=" fix-media-list-overlap"> <li class="level1"><div class="li"> mettre <pre class="code">#!/bin/sh cat "$GEDIT_CURRENT_DOCUMENT_PATH" | camllight</pre> <p> (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). </p> </div> </li> <li class="level1"><div class="li"> mettre <pre class="code">tee fichier_de_sauvegarde.ml | camllight</pre> <p> (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. </p> </div> </li> </ul> <div class="notetip">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 <br/> Si vous ne souhaitez pas enregistrer automatiquement à chaque exécution, rentrez en commande uniquement camllight </div><div class="notetip">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 </div><ul class=" fix-media-list-overlap"> <li class="level1"><div class="li"> mettre <pre class="code">#!/bin/sh i=0 for file in $(ls *$GEDIT_CURRENT_DOCUMENT_NAME-*.ml|sort -r) do let i=1+$i if [ $i -ge 15 ] then rm $file fi done echo $(echo $GEDIT_CURRENT_DOCUMENT_PATH); tee $(echo $GEDIT_CURRENT_DOCUMENT_NAME)-$(date +%s).ml | camllight;</pre> </div> </li> </ul> <p> 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). </p> </div> <div class='secedit editbutton_section editbutton_7'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Gedit] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="gedit" /><input type="hidden" name="codeblockOffset" value="10" /><input type="hidden" name="range" value="3778-6855" /><button type="submit" title="Gedit" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h3 class="sectionedit8" id="emacs">Emacs</h3> <div class="level3"> <p> Pour faire des programmes avec caml light, on peut aussi utiliser <a href="/emacs" class="wikilink1" title="emacs">emacs</a>. 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. </p> <p> 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. </p> <p> Pour installer tuareg, il y a trois méthodes : </p> <ul class=" fix-media-list-overlap"> <li class="level1"><div class="li"> Première méthode recommandée</div> </li> </ul> <p> Installer le paquet <a href="apt://camltuareg-mode" class="urlextern" title="apt://camltuareg-mode" rel="nofollow">camltuareg-mode</a> : </p> <pre class="code">sudo apt-get install camltuareg-mode</pre> <p> Pour l'utiliser il suffit d'éditer un fichier avec l'extension .ml ou bien de faire Alt+x puis <code> camltuareg-mode </code> 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. </p> <ul class=" fix-media-list-overlap"> <li class="level1"><div class="li"> Deuxième méthode: utilisation du mode tuareg original.</div> </li> </ul> <p> Le paquet tuareg-mode est adapté à ocaml, mais peut s'utiliser avec camllight. Il suffit d'installer le paquet <a href="apt://camltuareg-mode" class="urlextern" title="apt://camltuareg-mode" rel="nofollow">tuareg-mode</a>. Lors de la première compilation il vous sera demandé en bas de la fenêtre de renseigner la librairie, entrez <code>ocaml</code> ou <code>camllight</code> selon le langage choisi. Votre instruction sera alors compilée. </p> <ul class=" fix-media-list-overlap"> <li class="level1"><div class="li"> Troisième méthode (obsolète)</div> </li> </ul> <p> On peut aussi installer <a href="http://users.info.unicaen.fr/~bourdon/dochtml/mode-caml/" class="urlextern" title="http://users.info.unicaen.fr/~bourdon/dochtml/mode-caml/" rel="nofollow"> caml-mode pour emacs</a>. </p> <p> Lancer <a href="/emacs" class="wikilink1" title="emacs">emacs</a> et faire Alt-x puis taper <code> caml-mode </code> Ensuite, faire la procédure caml dans l'éditeur de texte <a href="/emacs" class="wikilink1" title="emacs">emacs</a> et pour l'évaluer, faire Ctrl-c,Ctrl-e. Puis rentrer <code>camllight</code> dans la barre du bas d'<a href="/emacs" class="wikilink1" title="emacs">emacs</a>. </p> <div class="notewarning">"caml-mode" est prévu pour programmer en ocaml, si vous l'utilisez pour camllight des bugs peuvent apparaître (en particulier, n'affiche pas les exceptions et se met à mouliner) </div> </div> <div class='secedit editbutton_section editbutton_8'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Emacs] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="emacs" /><input type="hidden" name="codeblockOffset" value="13" /><input type="hidden" name="range" value="6856-9019" /><button type="submit" title="Emacs" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h3 class="sectionedit9" id="vim">Vim</h3> <div class="level3"> <p> Le script bash vimcaml donne une interface du type wincaml avec vim. Il doit être exécuté dans un terminal et ouvre alors un deuxième terminal dans lequel se lance vim. Dans le premier se lance camllight. En utilisant la touche 'ù' (configurable) dans vim, le paragraphe (morceau de code démarquée par un saut de ligne de part et d'autre) sous le curseur est alors envoyé à camllight et exécuté. La touche 'è' (configurable aussi) exécute le fichier entier. Ce script nécessite que camllight - pour lequel les instructions sont données plus haut, gnome-terminal et vim soient installés. </p> <p> Télécharger ici: <a href="http://mxpgrm.free.fr/vimcaml-26-02-2011.tar.gz.tar.gz" class="urlextern" title="http://mxpgrm.free.fr/vimcaml-26-02-2011.tar.gz.tar.gz" rel="nofollow">http://mxpgrm.free.fr/vimcaml-26-02-2011.tar.gz.tar.gz</a> </p> <p> 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. </p> <hr /> <p> <a href="https://caml.inria.fr/caml-light/release.fr.html" class="urlextern" title="https://caml.inria.fr/caml-light/release.fr.html" rel="nofollow">https://caml.inria.fr/caml-light/release.fr.html</a> </p> </div> <div class='secedit editbutton_section editbutton_9'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Vim] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="vim" /><input type="hidden" name="codeblockOffset" value="13" /><input type="hidden" name="range" value="9020-10157" /><button type="submit" title="Vim" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h2 class="sectionedit10 page-header" id="problemes_connus">Problèmes connus</h2> <div class="level2"> </div> <div class='secedit editbutton_section editbutton_10'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[Problèmes connus] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="problemes_connus" /><input type="hidden" name="codeblockOffset" value="13" /><input type="hidden" name="range" value="10158-10187" /><button type="submit" title="Problèmes connus" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> <h3 class="sectionedit11" id="a_l_installation">À l'installation</h3> <div class="level3"> <p> 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. </p> <p> Un post sur le forum existe sur le sujet : <a href="https://forum.ubuntu-fr.org/viewtopic.php?id=1102821&p=2" class="urlextern" title="https://forum.ubuntu-fr.org/viewtopic.php?id=1102821&p=2" rel="nofollow">https://forum.ubuntu-fr.org/viewtopic.php?id=1102821&p=2</a> </p> <p> Rapportez-vous aux posts #29, #30 pour plus d'infos :) </p> <p> PS : Je suis encore la discussion donc n'hésitez pas à y poser vos questions si nécessaire ;) </p> </div> <div class='secedit editbutton_section editbutton_11'><form class="button btn_secedit form-inline" method="post" action="/caml_light"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1663791878" /><input type="hidden" name="summary" value="[À l'installation] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="a_l_installation" /><input type="hidden" name="codeblockOffset" value="13" /><input type="hidden" name="range" value="10188-" /><button type="submit" title="À l'installation" class=" btn btn-default btn btn-xs btn-default">Modifier</button></div></form></div> </div><!-- /CONTENT --></div> </div> </div> <div class="small text-right"> <span class="docInfo"> <ul class="list-inline"><li><i class="fa fa-fw fa-file-text-o text-muted"></i> <span title="caml_light.txt">caml_light.txt</span></li><li><i class="fa fa-fw fa-calendar text-muted"></i> Dernière modification: <span title="Le 21/09/2022, 22:24">Le 21/09/2022, 22:24</span></li><li class="text-muted">par 46.193.6.164</li></ul> </span> </div> </article> </main> <footer id="dw__footer" class="navbar navbar-default"> <div class="container"> <div class="small navbar-text"> <div class="footer-dw-title row"> <div class="media col-sm-4"> <!--<div class="media-left"> <img src="/lib/tpl/bootstrap3/images/logo.png" alt="Wiki ubuntu-fr" class="media-object" style="width:32px" /> </div> --> <div class="media-body"> <h4 class="media-heading">Documentation ubuntu-fr</h4> <p> Les pages de cette documentation sont rédigées par les utilisateurs pour les utilisateurs. Apportez-nous votre aide pour améliorer le contenu de cette documentation. </p> </div> </div> <div class="col-sm-4"> <h4>Liens utiles</h4> <ul class="list-group list-unstyled"> <li> <a href="/debutant" ><i class="fa fa-fw fa-child" style="font-size: 1.3em;"></i> Débuter sur Ubuntu</a> </li> <li> <a href="/wiki/participer_wiki" ><i class="fa fa-fw fa-edit" style="font-size: 1.3em;"></i> Participer à la documentation</a> </li> <li> <a href="/documentation_hors_ligne" ><i class="fa fa-fw fa-book" style="font-size: 1.3em;"></i> Documentation hors ligne</a> </li> <li> <a href="//www.ubuntu-fr.org/telechargement" ><i class="fa fa-fw fa-arrow-circle-down" style="font-size: 1.3em;"></i> Télécharger Ubuntu</a> </li> </ul> </div> <div class="col-sm-4"> <h4>Obtenir de l'aide</h4> <ul class="list-group list-unstyled"> <li> <a href="/tutoriel/comment_obtenir_une_reponse_satisfaisante" ><i class="fa fa-fw fa-info-circle" style="font-size: 1.3em;"></i> Chercher de l'aide</a> </li> <li> <a href="//doc.ubuntu-fr.org/" ><i class="fa fa-fw fa-book" style="font-size: 1.3em;"></i> Consulter la documentation</a> </li> <li> <a href="//forum.ubuntu-fr.org/" ><i class="fa fa-fw fa-comments" style="font-size: 1.3em;"></i> Consulter le Forum</a> </li> <li> <a href="//guide.ubuntu-fr.org/" ><i class="fa fa-fw fa-question-circle" style="font-size: 1.3em;"></i> Lisez le guide</a> </li> </ul> </div> <p> </p> </div> <div class="footer-license row"> <div class="col-sm-6"> <p> <a href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr" title="CC Paternité-Partage des Conditions Initiales à l'Identique 3.0 Unported" target="" itemscope itemtype="http://schema.org/CreativeWork" itemprop="license" rel="license" class="license"><img src="/lib/tpl/bootstrap3/images/license/cc.png" width="24" height="24" alt="cc" /> <img src="/lib/tpl/bootstrap3/images/license/by.png" width="24" height="24" alt="by" /> <img src="/lib/tpl/bootstrap3/images/license/sa.png" width="24" height="24" alt="sa" /> </a> </p> <p class="small"> Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante :<br/><a href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr" title="CC Paternité-Partage des Conditions Initiales à l'Identique 3.0 Unported" target="" itemscope itemtype="http://schema.org/CreativeWork" itemprop="license" rel="license" class="license">CC Paternité-Partage des Conditions Initiales à l'Identique 3.0 Unported</a> </p> </div> <div class="col-sm-6"> <ul id="dw__badges" class="list-inline text-right hidden-print"> <li> <a href="https://www.dokuwiki.org/template:bootstrap3" title="Bootstrap template for DokuWiki" target=""> <img src="/lib/tpl/bootstrap3/images/bootstrap.png" width="20" alt="Bootstrap template for DokuWiki" /> </a> </li> <li> <a href="https://www.php.net" title="Powered by PHP" target=""> <img src="/lib/tpl/bootstrap3/images/php.png" width="20" alt="Powered by PHP" /> </a> </li> <li> <a href="http://validator.w3.org/check/referer" title="Valid HTML5" target=""> <img src="/lib/tpl/bootstrap3/images/html5.png" width="20" alt="Valid HTML5" /> </a> </li> <li> <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" target=""> <img src="/lib/tpl/bootstrap3/images/css3.png" width="20" alt="Valid CSS" /> </a> </li> <li> <a href="https://www.dokuwiki.org/" title="Driven by DokuWiki" target=""> <img src="/lib/tpl/bootstrap3/images/logo.png" width="20" alt="Driven by DokuWiki" /> </a> </li> </ul> </div> </div> </div> </div> </footer> <img src="/lib/exe/indexer.php?id=caml_light&1746924034" width="2" height="1" alt="" /> <a href="#dokuwiki__top" class="back-to-top hidden-print btn btn-default btn-sm" title="Aller au contenu" accesskey="t"><i class="fa fa-chevron-up"></i></a> <div id="screen__mode"> <span class="visible-xs-block"></span> <span class="visible-sm-block"></span> <span class="visible-md-block"></span> <span class="visible-lg-block"></span> </div> </div> <!-- Piwik --> <script type="text/javascript"> var _paq = _paq || []; _paq.push(["setDomains", ["*.doc.ubuntu-fr.org","*.doc.edubuntu-fr.org","*.doc.lubuntu-fr.org","*.doc.xubuntu-fr.org","*.doc.edubuntu-fr.org","*.doc.lubuntu-fr.org","*.doc.ubuntu-fr.org","*.doc.xubuntu-fr.org"]]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//piwik.ubuntu-fr.org/"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', 3]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> <noscript><p><img src="//piwik.ubuntu-fr.org/piwik.php?idsite=3" style="border:0;" alt="" /></p></noscript> <!-- End Piwik Code --> </body> </html>