Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Camlp4 3.01 released
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Christophe Raffalli <Christophe.Raffalli@u...>
Subject: Re: [Caml-list] Caml 3.01 : pb with include

What I realy would like are more flexible include and constaints to make the
following work:

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 G1 : Semi_Group
  module G2 : Semi_Group
  val f : G1.t -> G2.t
end

(* I would like to be able to use include for the next definition:
something like:

module type Group_Morphism =
sig
  include Semi_Group_Morphism with module G1 : Group and module G2 : Group
end
*)

module type Group_Morphism =
sig
  module G1 : Group
  module G2 : Group
  val f : G1.t -> G2.t
end

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

(* I can't make the next definition work using include at all *)
 
module Idt_Group_Morphism(G : Group) = (
struct
  include (Idt_Semi_Group_Morphism(G) : Semi_Group_Morphism with module G1 = G
and module G2 = G)
end : Group_Morphism with module G1 = G and module G2 = G)

-- 
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