From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by sympa.inria.fr (Postfix) with ESMTPS id 3008F7EE20 for ; Tue, 20 Nov 2012 02:38:28 +0100 (CET) Received-SPF: None (mail4-smtp-sop.national.inria.fr: no sender authenticity information available from domain of berenger@riken.jp) identity=pra; client-ip=134.160.33.175; receiver=mail4-smtp-sop.national.inria.fr; envelope-from="berenger@riken.jp"; x-sender="berenger@riken.jp"; x-conformance=sidf_compatible Received-SPF: Pass (mail4-smtp-sop.national.inria.fr: domain of berenger@riken.jp designates 134.160.33.175 as permitted sender) identity=mailfrom; client-ip=134.160.33.175; receiver=mail4-smtp-sop.national.inria.fr; envelope-from="berenger@riken.jp"; x-sender="berenger@riken.jp"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: Pass (mail4-smtp-sop.national.inria.fr: domain of postmaster@postman.riken.jp designates 134.160.33.175 as permitted sender) identity=helo; client-ip=134.160.33.175; receiver=mail4-smtp-sop.national.inria.fr; envelope-from="berenger@riken.jp"; x-sender="postmaster@postman.riken.jp"; x-conformance=sidf_compatible; x-record-type="v=spf1" X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiABAM7eqlCGoCGvmWdsb2JhbABFhiCpaZJtAQEBAQEICwsHFCeCHgEBBAEjFTYKBgsLGAICBQQSCAMCAgkDAgECATMBERMGAgEBDgmHYAMJBgutKoI9hl8DiV6BIosSg3qBEwOIWI0kgRyET41W X-IronPort-AV: E=Sophos;i="4.83,282,1352070000"; d="scan'208";a="163067963" Received: from postman3.riken.jp (HELO postman.riken.jp) ([134.160.33.175]) by mail4-smtp-sop.national.inria.fr with ESMTP; 20 Nov 2012 02:38:25 +0100 Received: from postman.riken.jp (postman3.riken.jp [127.0.0.1]) by postman.riken.jp (Postfix) with SMTP id B6CC938380F2 for ; Tue, 20 Nov 2012 10:38:22 +0900 (JST) Received: from [172.27.98.103] (rikad98.riken.jp [134.160.214.98]) by postman.riken.jp (Postfix) with ESMTPA id 42E05382029A for ; Tue, 20 Nov 2012 10:38:20 +0900 (JST) Message-ID: <50AADF0C.7000903@riken.jp> Date: Tue, 20 Nov 2012 10:38:20 +0900 From: Francois Berenger User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121028 Thunderbird/16.0.2 MIME-Version: 1.0 To: caml-list@inria.fr References: <50A9C3BB.2050900@riken.jp> <50A9CB66.1020207@ens-lyon.org> <50A9D378.4020403@riken.jp> <50AA5462.9090201@free.fr> In-Reply-To: <50AA5462.9090201@free.fr> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-PMX-Version: 5.6.0.2009776, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2012.11.20.13020 Subject: Re: [Caml-list] module alias in a .mli file On 11/20/2012 12:46 AM, Tiphaine Turpin wrote: > In fact, the solution > > module V3 : module type of Vector3 > > does not work completely, because, the equality between Vector3 and V3 > is lost, which poses problem with the types defined by Vector 3. What > works is: > > include module type of struct module V3 = Vector3 end It's a little verbose but might be closer to what I was looking for. > Here is a full example: > > module M : sig > > module Vector3 : sig type t end > (* module V3 : module type of Vector3 *) > include module type of struct module V3 = Vector3 end > > end = struct > > module Vector3 = struct type t end > module V3 = Vector3 > > end > > open M > let id (x : Vector3.t) : V3.t = x > > > Regards, > > Tiphaine > > > On 11/19/12 13:44, Paolo Donadeo wrote: >> >> Actually this is not true, Martin explained how. :-) >> >> >> -- >> Paolo >> Sent by Gmail from Android >> >> Il giorno 19/nov/2012 11:35, "David House" > > ha scritto: >> >> Annoyingly though, there is no way to create a module alias in an mli. >> >> If, in an ml file, you have to refer often to >> Some_very_long_module_name, it can quite convenient to define an alias >> by doing "module Mod = Some_very_long_module_name" (or, locally, "let >> module Mod = Some_very_long_module_name in"). But there is no way of >> doing this in an mli: you have to use the long name every time. >> >> This is especially annoying if you have some big type that you want to >> expose in the mli. You really just want to copy-paste out of the ml >> file and stick it into the mli, but then you have to expand all the >> module aliases. (It's just a couple of goes with M-%, but still...) >> >> On Mon, Nov 19, 2012 at 6:36 AM, Francois Berenger >> > wrote: >> > On 11/19/2012 03:02 PM, Martin Jambon wrote: >> >> >> >> On Sun 18 Nov 2012 09:29:31 PM PST, Francois Berenger wrote: >> >>> >> >>> Hello, >> >>> >> >>> Here is my stupid question of the day: >> >>> can't I declare the following in a .mli file? >> >>> >> >>> module V3 = Vector3 >> >> >> >> >> >> No, because "= Vector3" specifies an implementation. >> >> An mli file is a module interface, and module interfaces never >> contain >> >> implementations. >> >> >> >> However, you may want to do this, which does what it says: >> >> >> >> module V3 : module type of Vector3 >> > >> > >> > Thanks a lot! That's exactly what I needed. :) >> > >> > >> > >> > >> > -- >> > Caml-list mailing list. Subscription management and archives: >> > https://sympa.inria.fr/sympa/arc/caml-list >> > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >> > Bug reports: http://caml.inria.fr/bin/caml-bugs >> >> -- >> Caml-list mailing list. Subscription management and archives: >> https://sympa.inria.fr/sympa/arc/caml-list >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >> Bug reports: http://caml.inria.fr/bin/caml-bugs >> >