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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 8AB187FE36 for ; Sun, 10 Jul 2016 13:57:14 +0200 (CEST) IronPort-PHdr: 9a23:jp8MFRMXD8cBqytiiCQl6mtUPXoX/o7sNwtQ0KIMzox0KP/zrarrMEGX3/hxlliBBdydsKMczbGK+Py9EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6anHS+4HYoFwnlMkItf6KuS9aU1Jj8i7360qaQSj0AvCC6b7J2IUf+hiTqne5Sv7FfLL0swADCuHpCdrce72ppIVWOg0S0vZ/or9YwuxhX7qYq/stEFKH7ZLgQTLpCDT1gPXpjt+PxshyWByeG+HoQGkwSlgFPGxCPpEX2RJ60tCblrcJ41TWTJtH/RrNyUjOnufQ4ACT0gTsKYmZquFrcjdZ92fpW Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=dra-news@metastack.com; spf=Pass smtp.mailfrom=dra-news@metastack.com; spf=None smtp.helo=postmaster@outmail148112.authsmtp.co.uk Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of dra-news@metastack.com) identity=pra; client-ip=62.13.148.112; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="dra-news@metastack.com"; x-sender="dra-news@metastack.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of dra-news@metastack.com designates 62.13.148.112 as permitted sender) identity=mailfrom; client-ip=62.13.148.112; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="dra-news@metastack.com"; x-sender="dra-news@metastack.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@outmail148112.authsmtp.co.uk) identity=helo; client-ip=62.13.148.112; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="dra-news@metastack.com"; x-sender="postmaster@outmail148112.authsmtp.co.uk"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AHAAD2NoJXl3CUDT5dhBR8pCkGlGeBehqHHzkTAQEBAQEBAQERAQEBAQEIFgdQgjIVghYGCAIeEkwFCQ1SIxwBBB4FiCQBn3uebYVfhRWFDYUPBZkYAYFdhC+XcZAPIAOBaQwBVYFYbYl6AQEB X-IPAS-Result: A0AHAAD2NoJXl3CUDT5dhBR8pCkGlGeBehqHHzkTAQEBAQEBAQERAQEBAQEIFgdQgjIVghYGCAIeEkwFCQ1SIxwBBB4FiCQBn3uebYVfhRWFDYUPBZkYAYFdhC+XcZAPIAOBaQwBVYFYbYl6AQEB X-IronPort-AV: E=Sophos;i="5.28,340,1464645600"; d="scan'208";a="226224417" Received: from outmail148112.authsmtp.co.uk ([62.13.148.112]) by mail2-smtp-roc.national.inria.fr with ESMTP; 10 Jul 2016 13:57:13 +0200 Received: from mail-c247.authsmtp.com (mail-c247.authsmtp.com [62.13.128.247]) by punt21.authsmtp.com (8.14.2/8.14.2/) with ESMTP id u6ABvCX3030913 for ; Sun, 10 Jul 2016 12:57:12 +0100 (BST) Received: from romulus.metastack.com (114.212-105-213.static.virginmediabusiness.co.uk [213.105.212.114]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/) with ESMTP id u6ABvBNn029835 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 10 Jul 2016 12:57:11 +0100 (BST) Received: from Bug ([172.16.0.29]) (authenticated bits=0) by romulus.metastack.com (8.14.2/8.14.2) with ESMTP id u6ABvBN5011931 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 10 Jul 2016 12:57:11 +0100 From: "David Allsopp" To: Date: Sun, 10 Jul 2016 12:57:11 +0100 Organization: MetaStack Solutions Ltd. Message-ID: <001701d1daa2$30f7ac30$92e70490$@metastack.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 16.0 Thread-Index: AdHaoiY+V+LbbD16RJap1fsJ38Or0A== Content-Language: en-gb X-Scanned-By: MIMEDefang 2.65 on 172.16.0.20 X-Server-Quench: 6fc603dd-4695-11e6-bcde-0015176ca198 X-AuthReport-Spam: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-AuthRoute: OCd1ZAARAlZZVg1f DC4bFwdFRBksPQFF ChxFJgxfNlEAUAAU NkdBMnJSNkcdTBdX QSgKW0suFQFuW2N0 bRpQbw9YZUBPXUto UUtXQ1JXCgdpAwIA BxoBUBxtdksDfg8C IzQcAHBZVUx5cAh/ REtcW2tQNmFgazRL TURefgZJcQIfeAIX OQQqSXMNYGAGYXwz FlZibyYLEGcXGw9c RwVIKVMJXXNDITcm QREEEi5nGlUIQSQ1 IFQjLVIBGEsKegUt OEBzEU0YIlcTEUVU AkBJDC5fKBEGTCMu CUtaVFQSR3w1 X-Authentic-SMTP: 61633634383431.1038:706 X-AuthFastPath: 0 (Was 255) X-AuthSMTP-Origin: 213.105.212.114/25 X-AuthVirus-Status: No virus detected - but ensure you scan with your own anti-virus system. Subject: RE: [Caml-list] Warnings opening modules (was: why is building ocaml hard?) Gerd Stolpmann wrote: > For example, when there is > > open M1 > open M2 > > at the beginning of a file, ocamldep doesn't know whether M2 is > another top-level module, or whether it is a submodule of M1. ocamldep > normally errs on the side of generating too many dependencies, which > is then tried to be corrected by only accepting those deps > corresponding to existing files. In this example, this would mean that > a dependency to M2 is emitted when there is a file M2.ml. Note that > this is wrong when M2 is actually a submodule of M1 AND the file M2.ml exists. I hate the open statement (indeed, I hate its equivalent in every language I've ever used), which limits how much I tend to consider it: but this is awful in so many ways. Do you happen to know how common it is to open one module and then open a *unqualified* submodule of that (i.e. where M2 is a submodule of M1)? It strikes me that that pattern requires not a new language convention as you go on to say, but at least two warnings and possibly a deprecation to discourage its ever being written! The first warning (including a deprecation message) should state that [open M2] relies on the previous [open M1] (similar idea as Warning 40) and the second warning should trigger if M2.cmi also exists indicating that M1.M2 has been opened rather than the actual M2 module (again, with a deprecation message). Both warnings being eliminated by giving: open M1 open M1.M2 The big stability nightmare that I see there is you have: open ThirdPartyLibrary open MyOwnProjectModule and a new version of ThirdPartyLibrary adds a submodule MyOwnProjectModule. It's also unfortunate that if M1, M1.M2 and "M2.ml" all define a value [foo], it's not possible to open M1, M1.M2 and "M2.ml" in a way which gives you "M2.ml"'s [foo] (if you follow that highly contrived example...!) David