Signature matching question?

From: Manuel Fahndrich (maf@microsoft.com)
Date: Fri Feb 12 1999 - 02:47:39 MET


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