[
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: | Manuel Fahndrich <maf@m...> |
| Subject: | Signature matching question? |
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