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 7BB1B7F249 for ; Wed, 31 Oct 2012 14:22:29 +0100 (CET) Received-SPF: None (mail4-smtp-sop.national.inria.fr: no sender authenticity information available from domain of thelema314@gmail.com) identity=pra; client-ip=209.85.223.182; receiver=mail4-smtp-sop.national.inria.fr; envelope-from="thelema314@gmail.com"; x-sender="thelema314@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail4-smtp-sop.national.inria.fr: domain of thelema314@gmail.com designates 209.85.223.182 as permitted sender) identity=mailfrom; client-ip=209.85.223.182; receiver=mail4-smtp-sop.national.inria.fr; envelope-from="thelema314@gmail.com"; x-sender="thelema314@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail4-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ie0-f182.google.com) identity=helo; client-ip=209.85.223.182; receiver=mail4-smtp-sop.national.inria.fr; envelope-from="thelema314@gmail.com"; x-sender="postmaster@mail-ie0-f182.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgcCAHolkVDRVd+2m2dsb2JhbABEhVC+FQgjAQEBAQEICQsJFCeCHgEBAQQSAhMLAQUIARscAgMMBgULDQkWDwkDAgECARERAQUBHBMIAQEeh1EBAw+ca2IJA4wwgnaEdAoZJw1ZiHUBBQyLbIMXgyQDlXaFaYh4P4Qt X-IronPort-AV: E=Sophos;i="4.80,687,1344204000"; d="scan'208";a="161009842" Received: from mail-ie0-f182.google.com ([209.85.223.182]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 31 Oct 2012 14:22:28 +0100 Received: by mail-ie0-f182.google.com with SMTP id k10so3582349iea.27 for ; Wed, 31 Oct 2012 06:22:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=uMIZbsHKBiE10cUI8GlyDDqgrzFa0LGnOIryf445/74=; b=saNHJWMULOXsIZNt+ql/w5b1WCGZoHvDFd+J8GrNrJkc4Ef/RpGM7c7WxuXoRr0TE+ vD/C/wFxwBMoZbDBKk8ZLQhotWpCBsW0fw8puZuFUOs5aofu4it7A97oxOpXjdSgaS8p gDO2z+3WPnJi8rgrdDcV34T2n75icSJ6ywrnZxoCtvB4f/JvogX9biY2N4KaUY6c6DST ZHrhaoE6u3QRHPD8EhL2hbfbdvDrjUgOL9Gpp8kAbPGhrrfgEaQSKWCaD4hJil/m2MeK oCvumsofffnQWKaD6/dURlKCcpOg742GKWqXNUFXyjyy9h62XnEDS0dkpWFaaKE7aJD3 bR6Q== Received: by 10.50.183.167 with SMTP id en7mr1375396igc.49.1351689747482; Wed, 31 Oct 2012 06:22:27 -0700 (PDT) Received: from [192.168.1.73] (99-121-78-10.lightspeed.lnngmi.sbcglobal.net. [99.121.78.10]) by mx.google.com with ESMTPS id az4sm3121785igb.2.2012.10.31.06.22.26 (version=SSLv3 cipher=OTHER); Wed, 31 Oct 2012 06:22:26 -0700 (PDT) Message-ID: <50912619.9090004@gmail.com> Date: Wed, 31 Oct 2012 09:22:33 -0400 From: Edgar Friendly User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: caml-list@inria.fr References: <508F22BD.7010103@riken.jp> <026F32A8-2790-4CDD-A839-58655A8074CA@first.in-berlin.de> <508FE869.3070603@inria.fr> <508FFB12.9030307@gmail.com> <508FFE82.2050409@inria.fr> <50900466.2050000@gmail.com> <5090F66F.60803@erratique.ch> In-Reply-To: <5090F66F.60803@erratique.ch> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Caml-list] Why should I use .mli files? On 10/31/2012 5:59 AM, Daniel Bünzli wrote: > Gabriel Scherer a écrit : >> Allowing signatures items in structures and .ml files alone does not >> increase the expressivity of the language. > I'm against this idea. This means that you have to skim trough the > whole ml file to actually understand what the module signature is. > This is very inconvenient. It makes sense to me that such a signature item in a .ml file should be restricted to being immediately before the value binding it applies to. i.e. val foo : 'a -> 'a let foo x = x would be legal, while the following would not be allowed: val foo: 'a -> 'a val bar: int -> string let foo x = x let bar = string_of_int This should solve the "skim through the whole ml file" problem. E.