> Do you want to continue? [Y/n]Il faut répondre "y" (yes) pour valider, ou "n" (no) pour abandonner, puis un retour à la ligne (touche "Entrée"). La lettre en majuscule indique le choix par défaut si vous faites simplement "Entrée". Il faut donc lancer les commandes données ci-dessous une à une et vérifier si des questions vous sont posées !
Avant d'utiliser opam pour la première fois, il faut l'initialiser. Pour ce faire, lancer les commandes suivantes :
opam init -y --shell-setup eval $(opam env)On peut ensuite installer des paquets opam avec la commande opam install. Installer les paquets qui seront utiles pour le cours :
CHECK_IF_PREINSTALLED=false opam install -y ocamlbuild opam install -y menhir merlin graphics dune ocamlformat tuareg ocp-index user-setup ocaml-lsp-server opam user-setup install eval $(opam env)Pour utiliser Down (amélioration du toplevel ; ne fonctionne pas sous Windows) :
opam install down touch ~/.ocamlinit && echo '#use "down.top";;' >> ~/.ocamlinitOn peut maintenant travailler confortablement avec OCaml, notamment avec un éditeur comme Emacs ou VIM (voir plus bas). Si on souhaite utiliser Visual Studio Code, il faut suivre les instructions ci-dessous.
curl -sSL "https://code.visualstudio.com/sha/download?build=stable&os=linux-x64" -o vscode-client-linux-x64.tar.gz tar zxf vscode-client-linux-x64.tar.gz rm vscode-client-linux-x64.tar.gz echo "export PATH=\$HOME/VSCode-linux-x64/bin/:\$PATH" >> $HOME/.profile
Une fois installé, vous pouvez lancer VScode en cliquant sur son icône ou avec la commande
codeCliquer sur l'icône et chercher l'extension "OCaml Platform" en tapant "OCaml" dans la barre de recherche. L'installer.
Cliquer sur "Open folder" et choisir un dossier pour travailler, par exemple td1 (le créer si besoin avec l'icône en haut à droite du sélecteur de fichier).
Ajouter un fichier dans votre dossier de travail (par exemple insertion.ml pour le premier exercice du TD 1). Il devrait être reconnu comme un fichier OCaml (petite icône orange avec un chameau). Il est typé à la volée et les types/erreurs sont affichés.
Pour exécuter un programme OCaml, ouvrir un nouveau terminal (menu Terminal) puis y lancer une commande comme :
ocamlopt insertion.ml -o insertion && ./insertion(ou make si on utilise un Makefile, ou dune runtest si on utilise dune, etc.)
Il est également possible d'envoyer tout le fichier à un toplevel OCaml avec Ctrl-A (tout sélectionner) puis Shift-Entrée.
Pour OCaml, il est indispensable de modifier le comportement par défaut de la complétion automatique de VSCode, qui choisit la première complétion possible lorsque l'on appuie sur la touche Entrée. Sans cela, le mot-clé in en fin de ligne est automatiquement remplacé par in_channel_length ! Chercher l'option appelée Editor: Accept Suggestion On Enter et lui donner la valeur off.
Pour utiliser l'environnement Cygwin au sein de Visual Studio Code (et donc avoir accès à OCaml depuis VScode), il faut le lancer avec ocaml-env. Vous pouvez créer un raccourci (fichier .lnk) pour automatiser cela (il faut alors lancer VScode avec ce raccourci), avec une commande similaire à "C:\Ocaml64\usr\local\bin\ocaml-env-win.exe" -- "C:\\Program Files\\Path To\\VisualStudioCode.exe". Pour trouver l'emplacement de l'exécutable de VScode sur votre machine, vous pouvez vous aider de ce lien StackOverflow.
Alternative : Si l'installation ci-dessus ne fonctionne pas, il est possible d'utiliser une machine virtuelle Linux tournant sous Windows (pas idéal, un peu lent, mais devrait fonctionner tout de même). Télécharger the course Debian live CD et installer VirtualBox. Lancer VirtualBox, créer une nouvelle installation Debian 32-bit, la lancer et choisir de démarrer depuis l'image téléchargée. Ensuite, procéder comme décrit ci-dessous pour un système Debian.
brew install opam emacs
apt-get install opam emacs
On a expliqué plus haut comment configurer Visual Studio Code pour OCaml.
La configuration d'Emacs se fait dans un fichier .emacs situé à la racine de votre compte. L'installation ci-dessus aura ajouté des lignes dans ce fichier. Au final, il pourra ressembler à quelque chose comme ça.
Le mode Merlin compile votre programme chaque fois que vous sauvez (pour signaler les erreurs), mais ne construit pas d'exécutable.
Pour construire un exécutable, vous pouvez appeler le compilateur OCaml directement depuis Emacs avec la commande Meta-x compile (Meta s'obtient avec la touche Alt ou Esc, au choix). Vous pouvez relancer la même commande avec Meta-x recompile. Si le compilateur OCaml signale une erreur, vous pouvez vous placer directement sur la position correspondante avec Meta-x next-error. Vous pouvez simplifier les raccourcis clavier de ces trois commandes en insérant par exemple les lignes suivantes dans votre fichier ~/.emacs :
(global-set-key [f5] 'compile) (global-set-key [f6] 'recompile) (global-set-key [f7] 'next-error)C'est là une façon très efficace de travailler. (Et vous pourrez utiliser ces raccourcis pour toute autre chose que la programmation OCaml.)
Dans le source, on accède au type inféré par le compilateur avec Ctrl-c Ctrl-t et à la complétion avec M-x completion-at-point. Voir la documentation.
Si vous souhaitez des raccourcis Ctrl-C, Ctrl-V, Ctrl-X pour le copier-coller sous Emacs, vous pouvez ajouter la ligne
(custom-set-variables '(cua-mode t nil (cua-base)))à votre fichier .emacs pour activer le mode Cua pour Emacs. C'est fait dans le fichier .emacs proposé.
let g:opamshare = substitute(system('opam config var share'),'\n$','','''') execute "set rtp+=" . g:opamshare . "/merlin/vim" filetype plugin on filetype indent off syntax enableLes deux premières lignes permettent à Vim de retrouver l'emplacement des fichiers Merlin.
On peut lancer une compilation avec :make (si la compilation est assurée par un Makefile). En cas d'erreur, le curseur sera placé à l'endroit correspondant.
Dans le source, on accède au type inféré par le compilateur avec \ t et à la complétion avec Ctrl-x Ctrl-o. Voir la documentation.