Re: utop execution of multiple OCaml files
Kate <[email protected]> Fri, 15 Aug 2025 12:37:52 +0100
| Newsgroups | gmane.comp.lang.caml.inria |
|---|---|
| Message-ID | <[email protected]> |
I'm not exactly sure if there is an easy way to do this for you but #use_output "your command";; in the default ocaml toplevel (i'm not sure that exists in utop) should be useful. The command can be any shell command. For example "dune top" will output the right #directory and #load, but this only works for libraries the same way "dune utop" does. So maybe something like: #use_output "dune top";; #use_output "for f in src/*.ml; do echo \"#mod_use \\\"$f\\\";\";done";; The first "dune top" will load any dependencies you may have and the shell command will load all of the ml files from src. I hope this helps, Kate On 8/15/25 01:50, Kenichi Asai wrote: > Suppose I have a.ml that uses definitions in b.ml (and possibly more). > To compile these files, all I need to do is to prepare a dune file > that mentions only the main file: (executable (name a)), and type > "dune build". > > But before I compile the whole program, I often want to play with > functions in a.ml using OCaml toplevel, like utop. If b.ml were > registered as a library, I could do it by "dune utop ." and then "#use > a.ml". But to do so, I need to create a directory for the library and > create another dune file for it. > > Is there a way to load all the modules into utop, just as simple as > typing "dune build" for the compilation case? > > Perhaps, there is a tool to analyze the dependency and produce a list > of commands like the following? > > #mod_use "b.ml";; > #mod_use "a.ml";; >