From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id IAA23405 for caml-redistribution; Fri, 12 Mar 1999 08:43:31 +0100 (MET) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA14901 for ; Thu, 11 Mar 1999 19:22:44 +0100 (MET) Received: from relay2.eunet.fr (relay2.eunet.fr [192.134.192.149]) by nez-perce.inria.fr (8.8.7/8.8.7) with SMTP id TAA00804 for ; Thu, 11 Mar 1999 19:22:42 +0100 (MET) Received: from relay5.eunet.fr by relay2.eunet.fr (5.65c8d/96.05.03) via EUnet-France id AA20855; Thu, 11 Mar 1999 19:22:42 +0100 (MET) Received: from relay2.eunet.fr (relay2.eunet.fr [192.134.192.149]) by relay5.eunet.fr (8.8.5/8.8.5) with ESMTP id TAA18051 for ; Thu, 11 Mar 1999 19:23:09 +0100 (MET) Received: from dassav (dassav.dassault-aviation.fr [193.106.72.131]) by relay2.eunet.fr (8.8.5/8.8.5) with SMTP id TAA20841 for ; Thu, 11 Mar 1999 19:22:41 +0100 (MET) Received: from fnet-ia1.dassault-aviation.fr by dassav (5.x/SMI-SVR4) id AA01095; Thu, 11 Mar 1999 19:14:09 +0100 Received: from dassault-aviation.fr by fnet-ia1.dassault-aviation.fr (SMI-8.6/SMI-SVR4) id TAA09215; Thu, 11 Mar 1999 19:27:56 +0100 Sender: weis Message-Id: <36E80B2A.C38CA1D2@dassault-aviation.fr> Date: Thu, 11 Mar 1999 19:27:55 +0100 From: Thierry Bravier Organization: Dassault Aviation X-Mailer: Mozilla 4.08 [en] (X11; I; SunOS 5.5.1 sun4m) Mime-Version: 1.0 To: caml-list Subject: Re: Suggestions pour les modules Dear ocamlers, Christophe Raffalli wrote: > Voici quelques suggestions qui me paraissent utiles pour > ameliorer la puissance du systeme de modules: > 3) Le include devrait aussi marcher pour les structures afin d'avoir > aussi de l'heritage sur les modules (les contraintes n'ont pas de sens > dans ce cas, il s'agit donc d'un simple sucre syntaxique). > Exemple: il est penible d'ecrire > module T = struct > let x = ... > let y = ... > end > module T' = > let x = x.T > let y = y.T > let z = ... > end > au lieu de > module T' = > include T > let z = ... > end I have already encountered this problem, and I also feel there is a need for including structs. > 4) Moins important : on devrait pouvoir passer une valeur ou un type a > un functor sans l'encapsuler a la main dans un module I once had to write: module type UNIT = sig end module Make_Foo (Unit : UNIT) = struct ... end module Foo = Make_Foo (struct end) which looks really silly, it would become module Foo = Make_Foo () would not it ? > 5) Encore moins important: Pouvoir utiliser les symboles infix d'un > module en notation infix (C'est la moindre des choses ?) > genre x Q.R.+ y ou x +.Q.R y pour Q.R.(+) x y I happen to have already suggested this useful feature (the answer was that it would complicate parsing) Cheers. -- Thierry Bravier Dassault Aviation - DGT / DPR / DESA 78, Quai Marcel Dassault F-92214 Saint-Cloud Cedex - France Telephone : (33) 01 47 11 53 07 Telecopie : (33) 01 47 11 52 83 E-Mail : mailto:thierry.bravier@dassault-aviation.fr Christophe Raffalli wrote: > Voici quelques suggestions qui me paraissent utiles pour > ameliorer la puissance du systeme de modules: > 3) Le include devrait aussi marcher pour les structures afin d'avoir > aussi de l'heritage sur les modules (les contraintes n'ont pas de sens > dans ce cas, il s'agit donc d'un simple sucre syntaxique). > > Exemple: il est penible d'ecrire > > module T = struct > let x = ... > let y = ... > end > > module T' = > let x = x.T > let y = y.T > let z = ... > end > > au lieu de > > module T' = > include T > let z = ... > end > > I have already encountered this problem, and I also feel there is a need for including structs. > 4) Moins important : on devrait pouvoir passer une valeur ou un type a > un functor sans l'encapsuler a la main dans un module > > Ainsi au lieu d'ecrire > > module type Un_Int = > sig > val n : int > end > > module F = functor (N : Un_Int) -> .... > > on pourrait ecrire > > module F = functor (n : int) -> .... > > Il suffit d'ajouter les sucres syntaxiques suivants: > > functor (type t) -> := functor (T : sig type t end) -> > avec t = T.t dans la suite > > functor (v : t) -> := functor (V : sig val v : t end) -> > avec v = V.v dans la suite > > et les abbreviations similaires pour l'application et les declaration > de types (il me semble que cette syntaxe n'est pas ambigue ?) I once had to write: module type UNIT = sig end module Make_Foo (Unit : UNIT) = struct ... end module Foo = Make_Foo (struct end) which looks really silly, it would become module Foo = Make_Foo () would not it ? > 5) Encore moins important: Pouvoir utiliser les symboles infix d'un > module en notation infix (C'est la moindre des choses ?) > > genre x Q.R.+ y ou x +.Q.R y pour Q.R.(+) x y I happen to have already suggested this useful feature (the answer was that it would complicate parsing) Cheers. -- Thierry Bravier Dassault Aviation - DGT / DPR / DESA 78, Quai Marcel Dassault F-92214 Saint-Cloud Cedex - France Telephone : (33) 01 47 11 53 07 Telecopie : (33) 01 47 11 52 83 E-Mail : mailto:thierry.bravier@dassault-aviation.fr