Re: Suggestions pour les modules

From: Thierry Bravier (Thierry.Bravier@dassault-aviation.fr)
Date: Thu Mar 11 1999 - 19:27:55 MET


Message-Id: <36E80B2A.C38CA1D2@dassault-aviation.fr>
Date: Thu, 11 Mar 1999 19:27:55 +0100
From: Thierry Bravier <Thierry.Bravier@dassault-aviation.fr>
To: caml-list <caml-list@inria.fr>
Subject: Re: Suggestions pour les modules

This is a multi-part message in MIME format.
--------------A5311F061467A557F457C7E5
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

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

--------------A5311F061467A557F457C7E5 Content-Type: message/rfc822 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Return-Path: <Thierry.Bravier@dassault-aviation.fr> Received: from dassav by fnet-ia1.dassault-aviation.fr (SMI-8.6/SMI-SVR4) id MAA06567; Thu, 11 Mar 1999 12:39:00 +0100 Received: from fnet-ia1.dassault-aviation.fr by dassav (5.x/SMI-SVR4) id AA18217; Thu, 11 Mar 1999 12:25:09 +0100 Received: from fnet-ia2.fnet-ia by fnet-ia1.dassault-aviation.fr (SMI-8.6/SMI-SVR4) id MAA06564; Thu, 11 Mar 1999 12:38:55 +0100 Received: from dassault-aviation.fr by fnet-ia2.fnet-ia (SMI-8.6/SMI-SVR4) id MAA01119; Thu, 11 Mar 1999 12:42:12 +0100 Sender: bravier@dassault-aviation.fr Message-Id: <36E7AC11.77D1B485@dassault-aviation.fr> Date: Thu, 11 Mar 1999 12:42:10 +0100 From: Thierry Bravier <Thierry.Bravier@dassault-aviation.fr> Organization: Dassault Aviation X-Mailer: Mozilla 4.08 [en] (X11; I; SunOS 5.5.1 sun4c) Mime-Version: 1.0 To: Christophe Raffalli <Christophe.Raffalli@univ-savoie.fr>, caml-list <caml-list@inria.fr> Subject: Re: Suggestions pour les modules References: <199903080745.IAA23583@pauillac.inria.fr> <36E3980B.DD19C015@univ-savoie.fr> Content-Type: multipart/alternative; boundary="------------F8A50FC2C22FF7E8E8F6F002"

--------------F8A50FC2C22FF7E8E8F6F002 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit

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



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:20 MET