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 D684A7F7C2 for ; Wed, 5 Feb 2014 20:53:55 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of pip88nl@gmail.com) identity=pra; client-ip=209.85.212.173; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="pip88nl@gmail.com"; x-sender="pip88nl@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of pip88nl@gmail.com designates 209.85.212.173 as permitted sender) identity=mailfrom; client-ip=209.85.212.173; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="pip88nl@gmail.com"; x-sender="pip88nl@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-wi0-f173.google.com) identity=helo; client-ip=209.85.212.173; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="pip88nl@gmail.com"; x-sender="postmaster@mail-wi0-f173.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ap4DAB2W8lLRVdStlWdsb2JhbABZgmuEMbg3gxSBEBYOAQEBAQcNCQkSKoImAQUjBBkBGx4DDAYFISECAg8FDxEBBQGIJQEDEQEEoUSMC1ODCZN3ChknDWSIKhEBBQyOcBaCWYFJBJgqkDVBhFo X-IPAS-Result: Ap4DAB2W8lLRVdStlWdsb2JhbABZgmuEMbg3gxSBEBYOAQEBAQcNCQkSKoImAQUjBBkBGx4DDAYFISECAg8FDxEBBQGIJQEDEQEEoUSMC1ODCZN3ChknDWSIKhEBBQyOcBaCWYFJBJgqkDVBhFo X-IronPort-AV: E=Sophos;i="4.95,788,1384297200"; d="asc'?scan'208";a="57033307" Received: from mail-wi0-f173.google.com ([209.85.212.173]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 05 Feb 2014 20:53:55 +0100 Received: by mail-wi0-f173.google.com with SMTP id hn9so946016wib.0 for ; Wed, 05 Feb 2014 11:53:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=4PpeZHzaisLsGxtiEDlgLnWvf3SEqLVSu8MqMTRY828=; b=vpyLbuYv8+0nrRiVRh2/0+XmEsjGNWSUw8mjsoAinbvs91b+sL3mmQ+i+y0RkvM4jZ EE1vyWxbnIb/mpXoZUhJaOfMb2rZgzBcnYhOokP6LE5OiXVcUVZmuBivcSj3Bpw0xI6j 9FtQ/Tq2ILTUKX73dskq2Q7d7qxRhwGPehwT9es4DZ/8Y6wfVokTXK9U+daPXsvmQv36 Ek8aZcg4WeV0gI+R7qe2S1RMrM2J3KR0ztGTi7pWdNvWNkXph+8utYnrN1+XZp9DUUJN 5mvyGh9mtSrMW+qhnWz8H6n00T1fWx4AxOxHeSfkRTb156YvXEnSJfvgc/M4/VSL6uMV smvA== X-Received: by 10.181.13.82 with SMTP id ew18mr3950411wid.22.1391630035227; Wed, 05 Feb 2014 11:53:55 -0800 (PST) Received: from localhost (xinutec.org. [2001:41d0:2:91b4::1]) by mx.google.com with ESMTPSA id gd5sm48627363wic.0.2014.02.05.11.53.53 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 05 Feb 2014 11:53:54 -0800 (PST) Date: Wed, 5 Feb 2014 20:53:52 +0100 From: Pippijn van Steenhoven To: caml-list@inria.fr Message-ID: <20140205195352.GS13040@xinutec.org> References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="yNSIfVo7/blqWHAw" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [Caml-list] Default methods for module signatures --yNSIfVo7/blqWHAw Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Yotam, The way I usually do this is by making a minimal required subset module type and then a default module that includes the overrides: module DefaultMonad(M : sig type 'a m val return : 'a -> 'a m val (>>=3D) : 'a m -> ('a -> 'b m) -> 'b m end) : Monad with type 'a m =3D 'a M.m =3D struct open M (* for >>=3D *) let (>>) m f =3D m >>=3D =CE=BB _ =E2=86=92 f include M (* fill in the signature and possibly override above definition *) end Then you can pass your incomplete module (without >>) to DefaultMonad, which implements a default for you, which you can still override in a complete module. Regards, Pippijn --yNSIfVo7/blqWHAw Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAEBAgAGBQJS8pbQAAoJEAfZIxi2zgu/xHAP/Rp+1i9aytPp2cOvRZ0qaE3B OnUR2SdI/g5gEBiKozM6ld736RuGjXEp17vlbIPxskdaaYefUEKquZ4FRpWocMXK yMYO7l5QwzuoBbDqfLjCi/EsB04MsuUF49t2mHLbx5Qi7NcrLH/aQk3j2sk/ydU+ BINVPlXd052zXViKvaTEiMMMz8QjRvG4KJzNyPZ8y6GZ1bXaMemU6Ld+FQ+0TGle GTHpcUUDhgTnp7hLzr6WlJs6PUMXTTXqZpg0W40SliFLFqGHqsNyWwJ6pN88yjwO /IYOJ7+HtHlE++IlWdiMWxMNxt1b81FmxwL8Fa7jc1MPhd996FyJKwyUM/1IMQbE /g1qPMV1eE2M/3t/x6f6BYOfc4daxe6VQkvLqZwGUPDW+EYHk5XQ54+gmpv6fpA4 DGzsv2/c7QM2RbCrfA1VRS46ODoS52+3WlNOY/Vxwp/XolduFG2pUDlhVmFrKzfF TrNojb5z6h4cdwkN5om/YmB9hr2npY0zgaYIRBIsXcMA86Oe+XNYCCehrK7Ixw+l qUozo5e0txCOQKX9IDoczmck27Qm7CJBAdJk+KEYAOukeammyTGbiE1s17otUKkJ xsRJ3qIo+tnUbLpgr06XxTWQxkBwBO9bR1o+7/Yk3gDg2qIO4M86vFKtJxmGdk/3 HCG9sjDBXP1Y7WfRFEbV =8iPS -----END PGP SIGNATURE----- --yNSIfVo7/blqWHAw--