Browse thread
Module abbreviation
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Romain Bardou <romain@b...> |
| Subject: | Module abbreviation |
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