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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 6FD197EE89 for ; Fri, 28 Oct 2016 18:37:07 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=shayne.fletcher.50@gmail.com; spf=Pass smtp.mailfrom=shayne.fletcher.50@gmail.com; spf=None smtp.helo=postmaster@mail-yb0-f181.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of shayne.fletcher.50@gmail.com) identity=pra; client-ip=209.85.213.181; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="shayne.fletcher.50@gmail.com"; x-sender="shayne.fletcher.50@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of shayne.fletcher.50@gmail.com designates 209.85.213.181 as permitted sender) identity=mailfrom; client-ip=209.85.213.181; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="shayne.fletcher.50@gmail.com"; x-sender="shayne.fletcher.50@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-yb0-f181.google.com) identity=helo; client-ip=209.85.213.181; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="shayne.fletcher.50@gmail.com"; x-sender="postmaster@mail-yb0-f181.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AhSD+Lx/+iCTXbP9uRHKM819IXTAuvvDOBiVQ1KB9?= =?us-ascii?q?1OgcTK2v8tzYMVDF4r011RmSDN+dtKkP2ruempujcFRI2YyGvnEGfc4EfD4+ou?= =?us-ascii?q?JSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47AblHf6ke/8SQVUk2mc1Ek?= =?us-ascii?q?fKKqQcWD3oye7KObw9XreQJGhT6wM/tZDS6dikHvjPQQmpZoMa0ryxHE8TNicu?= =?us-ascii?q?VSwn50dxrIx06vrpT4wJk21SVbvPYo7IZnU6j2duwSRKYQWDInOGcx7datshvO?= =?us-ascii?q?QQLJ7HIGemEbghtGAk7O6xSsDbnrtS6vjep0yS+XdePyQKw/WTm4p/NwSBb5ji?= =?us-ascii?q?pBOTo07GrXh9Y20fpzrxeophg5yInRNtLGfMFid7/QKItJDVFKWdxcAnRM?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0ClBQBofRNYf7XVVdFdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgn8BAQEBAYF0B6QtiEyEBYJThyKGIwKBdwdCEQEBAQEBAQEBAQE?= =?us-ascii?q?BEgEBCQsLCRsygjMYghgBAQMBEhEEGQEbHQEDAQsGAwILNwICIgERAQUBHAYTI?= =?us-ascii?q?ogXAQMPCJNOj02BMj8yi0aBa4JfBYNZChknDVODEQEBAQEBBQEBAQEBARkCBhC?= =?us-ascii?q?LAodLglsBBIElAZhoCAEBgSeGPohCkASND4I/Ex6BETSBNYJWDxyBbyI0AYdyA?= =?us-ascii?q?QEB?= X-IPAS-Result: =?us-ascii?q?A0ClBQBofRNYf7XVVdFdHAEBBAEBCgEBFwEBBAEBCgEBgn8?= =?us-ascii?q?BAQEBAYF0B6QtiEyEBYJThyKGIwKBdwdCEQEBAQEBAQEBAQEBEgEBCQsLCRsyg?= =?us-ascii?q?jMYghgBAQMBEhEEGQEbHQEDAQsGAwILNwICIgERAQUBHAYTIogXAQMPCJNOj02?= =?us-ascii?q?BMj8yi0aBa4JfBYNZChknDVODEQEBAQEBBQEBAQEBARkCBhCLAodLglsBBIElA?= =?us-ascii?q?ZhoCAEBgSeGPohCkASND4I/Ex6BETSBNYJWDxyBbyI0AYdyAQEB?= X-IronPort-AV: E=Sophos;i="5.31,410,1473112800"; d="scan'208,217";a="198538078" Received: from mail-yb0-f181.google.com ([209.85.213.181]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 28 Oct 2016 18:37:06 +0200 Received: by mail-yb0-f181.google.com with SMTP id d128so39115132ybh.2 for ; Fri, 28 Oct 2016 09:37:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=SxPwTgdrdKvl28yExLENX5HvGAGCxZSYCuINgI+txKk=; b=Vhf4XDi1R5eamA8+MjK1aAdRgOrh54LF6HIDKOcP1gdAv/5bT0JgKv+UXzUksFhIgX VTjNDVGf87QyWDYq+s7R1kXmoz45goGoj+Sb967TkzTruzAO/6FrS38WryyjwNvmpYVE 5JfDaTzvnjK04bl3JRqdezlHyPTaMUl2hX9F5pVWBDg69qUgYzQSgwNFuzmSZ9ebcjDX zBaN3pxXXYdVGChCK8BQ1sOC22v8d7zbunl6I5VGMC9ODNi7cR/r3Ux8KFoVsF7om3vy OqXWvkVmtydLOKyLzbi8bgJzDjwMu8g1cMuP9XMNviXwbhNphipHdhZxTlgNm1GZDqO6 j9SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=SxPwTgdrdKvl28yExLENX5HvGAGCxZSYCuINgI+txKk=; b=ka3ecMLRyOROusLCeqYfBwRaQoOEWAAPie8jOksAg878tc/SWwmMGKxq97H5v95ydH /kwjziws81NMrvB/1hzvuCQMtli8YuPAp35MLLKze5TrxGJIWeMDtGqpprvNEy3gOqBW sdtV0RlH8qwXZxasXH4jVD5+KW8DorGvufVt5uB2M2awS21xW44VdKsMavgW6d5zxxlR EOWLxBtnjswQYfh/fQgxgeNv7cpSnv6gS5oCM319Pi9Ki5NRVV8kFHACER7/XzNorOd/ qge2bvyjOjz5e0joj+6FmoXsehK89ZppiWBLLYI5UVRK9VeIwNxine7gg3UznA+iPI7U uktg== X-Gm-Message-State: ABUngvdJI6npTzAKyQV9q+Jgx7eJzTq/zWwKX5jYcqqTa+j45boxH1dZtQrmuv2vDOG98rX/uBqH6s8UW2HqUQ== X-Received: by 10.37.105.67 with SMTP id e64mr13141189ybc.102.1477672625053; Fri, 28 Oct 2016 09:37:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.39.202 with HTTP; Fri, 28 Oct 2016 09:36:44 -0700 (PDT) In-Reply-To: References: From: Shayne Fletcher Date: Fri, 28 Oct 2016 12:36:44 -0400 Message-ID: To: Nicolas Ojeda Bar Cc: "caml-list@inria.fr users" Content-Type: multipart/alternative; boundary=94eb2c14ea2ce9270f053fef7791 Subject: Re: [Caml-list] Functor signature "inheritance" --94eb2c14ea2ce9270f053fef7791 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Fri, Oct 28, 2016 at 12:17 PM, Nicolas Ojeda Bar < nicolas.ojeda.bar@lexifi.com> wrote: > I did not try it, but I think you want > > module Mul_default : MUL =3D functor (E : EQ) (N : NUM with type t =3D E.= t) > -> struct > include E > include (N : NUM with type t :=3D E.t) > > let mul (x : t) (y : t) : t =3D failwith "foo" > end > =E2=80=8B=E2=80=8BPhew! module type EQ =3D sig type t val eq : t * t -> bool end module type NUM =3D sig type t val from_int : int -> t val ( + ) : t -> t -> t end module type MUL_basic =3D sig type t val mul : t -> t -> t end module type MUL =3D functor (E : EQ) (N : NUM with type t =3D E.t) -> MUL_b= asic module Mul_default : MUL =3D functor (E : EQ) (N : NUM with type t =3D E.t)= -> struct include E include (N : NUM with type t :=3D E.t) let mul (x : t) (y : t) : t =3D failwith "foo" end =E2=80=8BThanks Nicolas. Lot to learn here! --=20 Shayne Fletcher --94eb2c14ea2ce9270f053fef7791 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

= On Fri, Oct 28, 2016 at 12:17 PM, Nicolas Ojeda Bar <<= a href=3D"mailto:nicolas.ojeda.bar@lexifi.com" target=3D"_blank">nicolas.oj= eda.bar@lexifi.com> wrote:
I did not try it, but I think you want

module Mul_default : MUL =3D functor (E : EQ) (N : NUM wi= th type t =3D E.t) =C2=A0-> struct
=C2= =A0 =C2=A0 include E
=C2=A0 =C2=A0 include (N : NUM with type= t :=3D E.t)

=C2=A0 =C2=A0 let mul (x : t) (y : t)= : t =3D failwith "foo"
end

module type EQ =3D sig
=C2=A0 type t
=C2=A0 v= al eq : t * t -> bool
end

= module type NUM =3D sig
=C2=A0 type t
=C2= =A0 val from_int : int -> t
=C2=A0 val ( + ) : t -> t -> t<= /div>
end
=C2=A0 type t
=C2=A0 val mul : t -> t -&= gt; t
end

module type MUL =3D functor (E : EQ) (N : NUM with type t = =3D E.t) -> MUL_basic

module Mul_default : MUL =3D functor (E : EQ)= (N : NUM with type t =3D E.t) =C2=A0-> struct
=C2=A0 =C2=A0 include E
= =C2=A0 =C2=A0 include (N : NUM with type t :=3D E.t)

=C2=A0 =C2=A0 let= mul (x : t) (y : t) : t =3D failwith "foo"
end

= =E2=80=8BThanks Nicolas. Lot to learn here!

--
Shayne Fletcher
--94eb2c14ea2ce9270f053fef7791--