From: Manuel Fahndrich <maf@microsoft.com>
To: "CAML List (E-mail)" <caml-list@inria.fr>
Subject: Signature matching question?
Date: Thu, 11 Feb 1999 17:47:39 -0800
I've run into the following problem with signature matching.
Consider the following module type and module definitions:
module type FOO =
sig
type bar
module A :
sig
val fresh : unit -> bar
end
end
module Foo : FOO =
struct
module A =
struct
type t = {foo: int}
let fresh () = {foo=1}
end
type bar = A.t
end
ocamlc -i test.ml
File "test.ml", line 19, characters 2-133:
Signature mismatch:
Modules do not match:
sig
module A : sig type t = { foo: int } val fresh : unit -> t end
type bar = A.t
end
is not included in
FOO
Modules do not match:
sig type t = { foo: int } val fresh : unit -> t end
is not included in
sig val fresh : unit -> bar end
Values do not match:
val fresh : unit -> t
is not included in
val fresh : unit -> bar
Is this intended behavior, or a bug? I would assume that within a module,
delcarations are treated as an unordered set.
Thus, the compiler should first find all type equivalences before matching
individual types.
-Manuel
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:19 MET