From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 D9B6380209 for ; Tue, 12 Sep 2017 23:22:11 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=yotambarnoy@gmail.com; spf=Pass smtp.mailfrom=yotambarnoy@gmail.com; spf=None smtp.helo=postmaster@mail-yw0-f179.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of yotambarnoy@gmail.com) identity=pra; client-ip=209.85.161.179; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yotambarnoy@gmail.com"; x-sender="yotambarnoy@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of yotambarnoy@gmail.com designates 209.85.161.179 as permitted sender) identity=mailfrom; client-ip=209.85.161.179; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yotambarnoy@gmail.com"; x-sender="yotambarnoy@gmail.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@mail-yw0-f179.google.com) identity=helo; client-ip=209.85.161.179; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yotambarnoy@gmail.com"; x-sender="postmaster@mail-yw0-f179.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AmPJnRBZPTnVVwrW0vmCJuHj/LSx+4OfEezUN459i?= =?us-ascii?q?sYplN5qZpc67bnLW6fgltlLVR4KTs6sC0LWG9f24EUU7or+/81k6OKRWUBEEjc?= =?us-ascii?q?hE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i76xXcoFx7+LQt4?= =?us-ascii?q?IPjuUs6X1pzvlrOEwIDIewhDmBa6ZLpzKl328VSQ5YEqht4oEq8szlPg5DNzZ+?= =?us-ascii?q?ldxmdlPxjbyw3g68yz1IV//i9ToPUv64hLVqCsLIoiSrkNPTM6OmV9zsTxsx7S?= =?us-ascii?q?BV+e4WcVV28fiBxPEiDK6Rj7WtH6tS6s5bk14zWTIcCjFeN8Yj+l9ao+DUKxhQ?= =?us-ascii?q?=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AKAQA5T7hZhrOhVdFcHAEBBAEBCgEBF?= =?us-ascii?q?QEBAQECAQEBAQgBAQEBg1Q/bicHg3CKIZAlgXSCR4ZkjH2CEgojhRsChD0HPxg?= =?us-ascii?q?BAQEBAQEBAQEBARIBAQEICwsIKC+CMwUBHgaCPAEFIx0BGxILAQMMBgULDQICC?= =?us-ascii?q?R0CAiIBEQEFAQoSBhMSigYBAxUQn3hAjAuCBQUBHIMKBYNdChknAwpXgxsBAQE?= =?us-ascii?q?BAQUBAQEBARsCBhJ8gh2CAoFQhQuICoJhBYggDJhIh1uMd4JukASVGxQFH4EVH?= =?us-ascii?q?4FFMiEkXxqEbx+CDyQ2iDOBUwEBAQ?= X-IPAS-Result: =?us-ascii?q?A0AKAQA5T7hZhrOhVdFcHAEBBAEBCgEBFQEBAQECAQEBAQg?= =?us-ascii?q?BAQEBg1Q/bicHg3CKIZAlgXSCR4ZkjH2CEgojhRsChD0HPxgBAQEBAQEBAQEBA?= =?us-ascii?q?RIBAQEICwsIKC+CMwUBHgaCPAEFIx0BGxILAQMMBgULDQICCR0CAiIBEQEFAQo?= =?us-ascii?q?SBhMSigYBAxUQn3hAjAuCBQUBHIMKBYNdChknAwpXgxsBAQEBAQUBAQEBARsCB?= =?us-ascii?q?hJ8gh2CAoFQhQuICoJhBYggDJhIh1uMd4JukASVGxQFH4EVH4FFMiEkXxqEbx+?= =?us-ascii?q?CDyQ2iDOBUwEBAQ?= X-IronPort-AV: E=Sophos;i="5.42,384,1500933600"; d="scan'208";a="290765616" Received: from mail-yw0-f179.google.com ([209.85.161.179]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 12 Sep 2017 23:22:10 +0200 Received: by mail-yw0-f179.google.com with SMTP id v72so28910392ywa.3 for ; Tue, 12 Sep 2017 14:22:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=7i0HhDjjS0rvsn51hPVdG6M9YvxoH5cGDkJPsGPVpvw=; b=os6Hunld7LZjgCpc4MvC/dZpU9xtF558adWDK+1Eb/SUINQJ+HFV+lDvRaOPHUcPXn BoJGvd7fSV4BnFJ3h0eUXotp950K1G58LUYQMkrBHGdcRItnpt47rMS0LkHuwsEql7Uw fH6j4jJZxjSD35rTJmjKLeD3JmDN31kvxvOpq+63e3eeMGo4Z6vnh1Janexu+DksvRyr I1d2YFSrXsnk9OT9os92c2/JTW00R4qGlMvDh8jyJVZZJKcxwXa7VJO7qO/741bnJQYI CLIBst/tKCpqva/LtaF0ZMEl0ITIkEert7vcSGMQMVg60zHJ96QWTkyniJEDn/Mb+Jou pa1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=7i0HhDjjS0rvsn51hPVdG6M9YvxoH5cGDkJPsGPVpvw=; b=Iz++ZwO2XAHFhbawM4qBfJEJlzHevR2lAwfX53AkvCBE3Z68kgoFUzHjB/OlkWC6e7 0uNNPNgih6UgWIIlQWENilAcw/CaZi1yqKtKXZxbL7oQ3TTNeq+y4eiNlYKCbHWuPQnE +/rFvro8YweiIdlke+tGn+6IZ0suO9cxTdgwB6rrr61uuWWD1EDikkfgJ720873cLXAi 2JayFSjIInFpyesgj4g6YoRe3Rtk9sLB7znsy7iu6FXdmshiP1S4z/6tVXwgiVHaAIuc fWpio/bB6prUWmIWHJ8YjPVKR7dJSNic1HDFbUv1sccxqFV14t1KDF4iV3xjXajLsyMf 0f5A== X-Gm-Message-State: AHPjjUjiwJrtZYqApD6O3S9uNWgorMI1Vi+c5e5dyW8y5AOUfJN1KAbM sOzElM6l6oESmsj/W+cHdwoyrAjLbnzAyNjMF9w= X-Google-Smtp-Source: AOwi7QDSatFeL1+wqx0f0X5KG8QZzr5UzDJunCBDbSb0C0Ay/4g5dSC/4e2c6gpsTqcAJ93R5DT/2Fepp0b+4kwzHcQ= X-Received: by 10.129.170.20 with SMTP id i20mr4944369ywh.329.1505251330191; Tue, 12 Sep 2017 14:22:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.161.98 with HTTP; Tue, 12 Sep 2017 14:21:49 -0700 (PDT) In-Reply-To: References: From: Yotam Barnoy Date: Tue, 12 Sep 2017 17:21:49 -0400 Message-ID: To: "Paul A. Steckler" Cc: Ocaml Mailing List Content-Type: text/plain; charset="UTF-8" Subject: Re: [Caml-list] Default value in module The easiest thing to do is to create a prototype module with the value you want, and to include that module (include Foo) in any module you want to have that basic structure. You can even have as many prototype modules as you want, so the system is extremely flexible. On Tue, Sep 12, 2017 at 4:00 PM, Paul A. Steckler wrote: > I found myself wanting to define several modules that implement a > module type, where all the implementations but one use the same value > of an item in the type. Essentially, I wanted a default value in the > module type, which I can override if needed. Maybe there's a way to do > this already. > > If not, the type could look like: > -- > module type Foo = > sig > val ?x : int = 42 > end > -- > > and instances could be: > > -- > module Bar1 : Foo = > struct > let x = 17 > end > > module Bar2 : Foo = > struct > end > -- > > Is this a reasonable idea? > > More precisely, I wanted to take an existing module type, add an item > to it, and then edit just the instance with the non-default value. As > it was, I had to edit all the instances. I could have used the class > system to do something similar, but that would have required changing > even more code. > > -- Paul > > -- > 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