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 SAA15292 for caml-red; Mon, 8 Jan 2001 18:59:13 +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 RAA06695 for ; Mon, 8 Jan 2001 17:25:08 +0100 (MET) Received: from mail5.microsoft.com (mail5.microsoft.com [131.107.3.121]) by nez-perce.inria.fr (8.11.1/8.10.0) with SMTP id f08GP7r29147 for ; Mon, 8 Jan 2001 17:25:07 +0100 (MET) Received: from 157.54.9.108 by mail5.microsoft.com (InterScan E-Mail VirusWall NT); Mon, 08 Jan 2001 07:00:16 -0800 (Pacific Standard Time) Received: by inet-imc-05.redmond.corp.microsoft.com with Internet Mail Service (5.5.2651.58) id ; Mon, 8 Jan 2001 07:00:13 -0800 Message-ID: <112C6E8A1B25D34BB27D48D2FD2E96CFC94299@TVP-MSG-02.europe.corp.microsoft.com> From: Claudio Russo To: Alain Frisch Cc: caml-list@inria.fr, kfl@it.edu, sestoft@dina.kvl.dk Subject: RE: first class modules (was: alternative module systems) Date: Mon, 8 Jan 2001 06:59:53 -0800 X-Mailer: Internet Mail Service (5.5.2651.58) content-class: urn:content-classes:message Sender: weis@pauillac.inria.fr > > For the record, your simplification based on identity of signature > > identifiers > > is probably ok in practice, but it does > > rule out some examples that involve package types with free type > > variables. > > Right. Would it break something to allow named module type with > explicit arguments: > > module type 'a ARRAY = sig > type array > val init: 'a -> array > val sub: array -> int -> 'a > val update : array -> int -> 'a -> array > end > > ? > > Then the unification between < (a1,...,ap) S > and < (b1,...,bq) T > > is solved by equating S = T (syntactically), p=q and unifying > a1=b1,...,ap=bp. I think this would be fine, but you then also have to deal with the meaning of these parameterised signatures in other contexts, eg: functor F(X: ('a -> int) S )= ; and so on. Is this declaration illegal or should the functor F be implicitly polymorphic in 'a? This is not impossible to deal with, just needs some more work. I suppose you could only allow signature applications in core type expressions of the form < sigexp >, but that seems a little hacky. -c > > -- > Alain Frisch > >