If you only have a file ast.mli, you should not be able to write Ast.Sig because you do not have a module named Ast. Please double check your example. It cannot be working as you describe.
Hello, dear Caml-list,
I have a file ast.mli. It has no .ml implementation as it contains only
type definitions.
I have a file toto.ml, which contains simply:
module A = Ast
So I only use it as an abbreviation, to write A.t instead of Ast.t for
instance.
However, at link-time, the following error occurs:
File "_none_", line 1, characters 0-1:
Error: Error while linking toto.cmo:
Reference to undefined global `Ast'
I found a workaround, which is to change ast.mli to put all type
definitions in a signature, such as:
module type Sig =
sig
type t = ...
...
end
And then, in toto.ml:
module type A =
sig
include Ast.Sig
end
Is there any better way to write such a module abbreviation, without
changing ast.mli? And, of course, without copying or renaming ast.mli
into ast.ml.
By the way, this is yet another evidence for the need of a construction
"sig of" which would take a module (with or without implementation) and
return its signature.
Thanks,
--
Romain Bardou
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs