Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to reload OCaml modules in utop

Tags:

ocaml

utop

Is it possible reload modules in OCaml's utop?

My development workflow goes something like this when playing around with OCaml code:

First, open up a file example.ml in Vim and hack on it. Switch to another terminal and run utop. From within utop, load the code with the directive #use "example.ml";;.

Go back to Vim and make some changes in the code. After changing the code, I want to play around with the new changes. Go back to utop and rerun the directive #use "example.ml".

It would be nice if there were a #reload directive that would reload all previously loaded modules, but there doesn't appear to be. Is there some way to easily reload all previously loaded modules?

Ideally this would work similarly to GHCi's :reload command.

like image 239
illabout Avatar asked Sep 04 '17 06:09

illabout


People also ask

What is OCaml Utop?

Universal toplevel for OCaml utop is an improved toplevel (i.e., Read-Eval-Print Loop or REPL) for OCaml. It can run in a terminal or in Emacs. It supports line edition, history, real-time and context sensitive completion, colors, and more. It integrates with the Tuareg mode in Emacs.


Video Answer


1 Answers

At the time this question was asked, I believe dune had not yet established itself as the build system for OCaml. Using dune, you can simply launch a utop instance with locally defined libraries loaded (as explained here) by doing :

$ dune utop <dir> -- <args> 

Where <dir> is a directory under which dune will search (recursively) for all libraries that will be loaded

like image 58
ghilesZ Avatar answered Sep 28 '22 00:09

ghilesZ