简体   繁体   中英

Loading a module with dependencies in utop

I have two modules A.ml and B.ml like so:

A.ml :

type t = int
let from_int (i : int) : t = i

B.ml :

open A
let my_t : t = from_int 0

I can compile them just fine by invoking ocamlc A.ml B.ml however I have no idea how to load them both in utop in order to use my_t interactively. Using:

  • utop -init B.ml yields Error: Reference to undefined global 'A'
  • utop followed by #use "A.ml";; and #use "B.ml";; leads to the same error
  • removing open A from B.ml makes this double #use work but ocamlc A.ml B.ml now fails on B with Error: Unbound type constructor t .

You have to compile first a.ml :

  ocamlc -c a.ml  // yields a.cmo

in utop :

  #load "a.cmo";;
  #use "b.ml";;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM