caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Christophe Raffalli <Christophe.Raffalli@univ-savoie.fr>
To: caml-list@inria.fr
Subject: [Caml-list] Caml 3.01 : pb with include
Date: Mon, 12 Mar 2001 12:52:57 +0100	[thread overview]
Message-ID: <3AACB899.5206E211@univ-savoie.fr> (raw)
In-Reply-To: <20010311060436.A14277@verdot.inria.fr>


I tried to use the new include feature for my algebra library. I failed
!
Am I missing something ?

Here is a small example I created just to show the problem:

module type Semi_Group =
sig
  type t
  val e : t
  val ( ** ) : t -> t -> t
end

module type Group =
sig
  include Semi_Group
  val inv : t -> t
end

module type Semi_Group_Morphism =
sig
  module SG1 : Semi_Group
  module SG2 : Semi_Group
  val f : SG1.t -> SG2.t
end

module type Group_Morphism =
sig
  module G1 : Group
  module G2 : Group
  include Semi_Group_Morphism with module SG1 = G1 and module SG2 = G2
end

(*
Nice : SG1 et SG2 are groups : Here isCaml answer 

module type Group_Morphism =
  sig
    module G1 : Group
    module G2 : Group
    module SG1 :
      sig
        type t = G1.t
        val e : t
        val ( ** ) : t -> t -> t
        val inv : t -> t
      end
    module SG2 :
      sig
        type t = G2.t
        val e : t
        val ( ** ) : t -> t -> t
        val inv : t -> t
      end
    val f : SG1.t -> SG2.t
 
end                                                                           
*)

module Idt_Semi_Group_Morphism(SG : Semi_Group) = (
struct
  module SG1 = SG
  module SG2 = SG
  let f = fun x -> x
end : Semi_Group_Morphism with module SG1 = SG and module SG2 = SG)

module Idt_Group_Morphism(G : Group) = (
struct
  module G1 = G
  module G2 = G
  include (Idt_Semi_Group_Morphism(G) : Semi_Group_Morphism with module
SG1 = G and module SG2 = G)
end : Group_Morphism with module SG1 = G and module SG2 = G and module
G1 = G and module G2 = G)

(* 
Heavy and does not work ! 

Signature mismatch:
Modules do not match:
  sig
    module SG1 : sig type t = G.t val e : t val ( ** ) : t -> t -> t end
    module SG2 : sig type t = G.t val e : t val ( ** ) : t -> t -> t end
    val f : SG1.t -> SG2.t
  end
is not included in
  sig
    module SG1 :
      sig
        type t = G.t
        val e : t
        val ( ** ) : t -> t -> t
        val inv : t -> t
      end
    module SG2 :
      sig
        type t = G.t
        val e : t
        val ( ** ) : t -> t -> t
        val inv : t -> t
      end
    val f : SG1.t -> SG2.t
  end
Modules do not match:
  sig type t = G.t val e : t val ( ** ) : t -> t -> t end
is not included in
  sig type t = G.t val e : t val ( ** ) : t -> t -> t val inv : t -> t
end
The field `inv' is required but not
provided                                    
*)

-- 
Christophe Raffalli
Université de Savoie
Batiment Le Chablais, bureau 21
73376 Le Bourget-du-Lac Cedex

tél: (33) 4 79 75 81 03
fax: (33) 4 79 75 87 42
mail: Christophe.Raffalli@univ-savoie.fr
www: http://www.lama.univ-savoie.fr/~RAFFALLI
-------------------
To unsubscribe, mail caml-list-request@inria.fr.  Archives: http://caml.inria.fr


  reply	other threads:[~2001-03-12 15:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-11  5:04 [Caml-list] Camlp4 3.01 released Daniel de Rauglaudre
2001-03-12 11:52 ` Christophe Raffalli [this message]
2001-03-12 17:13   ` [Caml-list] Caml 3.01 : pb with include Andreas Rossberg
2001-03-13 10:32     ` Xavier Leroy
2001-03-13 11:18       ` Andreas Rossberg
2001-03-13 11:23       ` Christophe Raffalli
2001-03-21 13:25 Dave Berry
2001-03-21 16:15 ` Judicael Courant
2001-03-23 12:02 Dave Berry
2001-03-27  9:19 ` Judicael Courant

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3AACB899.5206E211@univ-savoie.fr \
    --to=christophe.raffalli@univ-savoie.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).