####################################
Un **toplevel** ``OCaml`` embarqué
####################################
.. include:: .javascript.fr.rst
------------------------------------------------------------------------------
.. seealso:: Je recommande les outils suivants, plus modernes et plus complets !
- `BetterOCaml.ml `_ est un bon petit éditeur de OCaml (avec le code à gauche, la sortie de son exécution à droite), développé par `un élève de MP* `_ en 2020) ;
- `TryOCaml.OCamlPro.com `_ est un autre bon environnement pour utiliser le système de base de OCaml en ligne, sans rien installer ! C'est fait par OCamlPro et la solution "officielle" ;
- `Learn-OCaml `_ est un environnement plus lourd et plus complet. Pas sûr qu'il marche en entier hors-ligne.
.. seealso:: Utiliser localement un éditeur et interpréteur OCaml ? C'est possible sur ce site ! Sans rien avoir à installer !
`BetterOCaml `_ est une console et un éditeur OCaml simple, mais qui fonctionne en ligne sans besoin d'un serveur qui calcule votre code derrière : tout est interprété en javascript dans votre navigateur ! J'héberge une copie locale ici : `BetterOCaml `_. Il est aussi sur `ocaml.besson.link `_.
Le toplevel
-----------
.. warning:: Soucis de scrolling et de positionnement du contenu écrit par le toplevel.
.. raw:: html
Toplevel OCaml 4.00.1
+----------------------------------+
| .. image:: .ocaml-powered.png |
| :scale: 130 % |
| :align: right |
| :alt: OCaml powered :) |
| :target: http://Caml.Inria.fr |
+----------------------------------+
------------------------------------------------------------------------------
.. seealso::
Try Ocaml
La page ``_ présente **Try OCaml**, directement copié
depuis `try.ocamlpro.com `_, qui présente les
avantages suivants :
* leçons intéractives en anglais (plus de support du français avec la v4 !);
* support du "drag and drop" de fichiers;
* permet de télécharger l'historique des entrées;
* et le mieux : support du module ``Graphics`` !
Un exemple de programme OCaml
-----------------------------
Le toplevel se charge avec les quelques lignes suivantes dans son *buffer*
d'entrée :
.. code-block:: ocaml
let x = 50+10;;
let y = x * 3;;
String.make x 'a';;
sin 1.;;
let rec fact n = if n = 0 then 1. else float n *. fact (n - 1);;
fact 20;;
"abc" < "def";;
À propos
--------
Comme dans `.special.rst <_sources/.special.txt>`_,
j'utilise la directive ``.. raw:: html`` pour
**embarquer du code** ``HTML`` dans la page produite par **Sphinx**.
:blue:`C'est simple, c'est propre.`
Hébergements
------------
Les scripts **Javascript** utilisés sur mes pages sont désormais
hébergés sur ce dépot *git* : `lbesson/web-sphinx-scripts
`_, sur **bitbucket.org**.
Copyrights
----------
* **OCaml** est © et ® Inria;
* **toplevel.js** est obtenu par le compilateur **js_of_ocaml**.
Pour plus d'infos, voir ``_.
Remerciements
-------------
* Merci aux auteurs de **js_of_ocaml** (voir ``_);
* Merci aux auteurs d'**OCaml** (voir ``_);
.. (c) Lilian Besson, 2011-2021, https://bitbucket.org/lbesson/web-sphinx/