Module Omod

module Omod: sig .. end
Load installed modules in the toplevel.

See the Tutorial.

v0.0.2 — homepage



Omod


type fpath = string 
The type for file paths.
type silent = [ `Loads | `No | `Yes ] 
The type for specifying silence. See Omod.load.
val load : ?batch:bool ->
?silent:silent ->
?force:bool -> ?incs:bool -> ?init:bool -> ?dir:fpath -> string -> bool
load ~batch ~silent ~force ~deps ~incs ~init ~dir "M" loads module M and returns true if the load was successful; init files may however have failed to load. The exact side effects of this function are described here. The optional parameters are as follows:

The full syntax for specifying the module to load is:

[PKG.]M(@VARIANT)*

val loads : ?batch:bool ->
?silent:silent ->
?force:bool ->
?incs:bool -> ?init:bool -> ?dir:fpath -> string list -> bool
loads is like Omod.load but for a list of module specifications. Note that specified variants apply to all of the modules.
val help : unit -> unit
help () prints basic help on stdout.
val status : unit -> unit
status () prints what is currently loaded by omod (including assumptions)

Assuming loads

This following can be used to assume that certain loads are already performed to prevent them from being (re)loaded by Omod.load invocations.

val assume_load : ?batch:bool ->
?silent:silent ->
?force:bool -> ?incs:bool -> ?init:bool -> ?dir:fpath -> string -> bool
assume_load is like Omod.load but assumes the corresponding load sequence was already performed.
val assume_loads : ?batch:bool ->
?silent:silent ->
?force:bool ->
?incs:bool -> ?init:bool -> ?dir:fpath -> string list -> bool
assume_loads is like Omod.loads but assumes the corresponding load sequence was already performed.
val assume_inc : fpath -> unit
assume_inc dir assumes that path dir has been included.
val assume_obj : fpath -> unit
assume_obj obj assumes that file path obj has been loaded.
module Private: sig .. end
Private definitions.

Tutorial

To use the toplevel helpers simply bring the Omod module in your scope: type or add the following line to your ~/.ocamlinit file.

#use "omod.top"

If you are using ocamlnat you unfortunately need to #use another file:

#use "omod.nattop"
It is also likely that opam's initialization bits in .ocamlinit to find the file to #use won't work. So you need to invoke ocamlnat with -noinit and indicate where the file to #use can be found. The following invocation should work:
rlwrap ocamlnat -I $OCAML_TOPLEVEL_PATH -noinit
Now whenever you want to use a module named M invoke:
# Omod.load "M"
This will recursively load its dependencies and toplevel init files. See Omod.load for more options and details.

If you are using omod in scripts you should also specify the package PKG where M should be found using the PKG.M syntax. This because a further package install could also install a module M resulting in a load ambiguity and your script no longer working.

If you run into multiple load sequence resolutions, Omod interactively asks to choose one of the possible sequences. Assuming you have the package ptime installed this is an example:

# Omod.load "Ptime_clock"
since ptime provides an os clock for your operating system and a jsoo clock for your browser.

The ambiguity can be automatically resolved by specfiying the variant you want explicitely (see Omod.load for details) for example to directly request the OS clock you should issue:

# Omod.load "Ptime_clock@os"
In a script it would even be better to write:
# Omod.load "ptime.Ptime_clock@os"

Finally to list what was loaded by Omod type:

# Omod.status ()
For information about how Omod locates packages, consult omod conf --help.

Load semantics and effects