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 0E2867EE89 for ; Fri, 28 Oct 2016 18:12:44 +0200 (CEST) Authentication-Results: mail2-smtp-roc.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-yw0-f175.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of shayne.fletcher.50@gmail.com) identity=pra; client-ip=209.85.161.175; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="shayne.fletcher.50@gmail.com"; x-sender="shayne.fletcher.50@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of shayne.fletcher.50@gmail.com designates 209.85.161.175 as permitted sender) identity=mailfrom; client-ip=209.85.161.175; receiver=mail2-smtp-roc.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 (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-yw0-f175.google.com) identity=helo; client-ip=209.85.161.175; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="shayne.fletcher.50@gmail.com"; x-sender="postmaster@mail-yw0-f175.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AF/4yJhJIJSQ/2lcmFtmcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgUK//xwZ3uMQTl6Ol3ixeRBMOAuqgC1LGd4v6oGTRZp83e4DZaKN0EfiRGoP?= =?us-ascii?q?tVtjRoONSCB0z/IayiRA0BN+MGamVY+WqmO1NeAsf0ag6aiHSz6TkPBke3blIt?= =?us-ascii?q?daymUrLV2uK23Oe28oabRAdFiDP1S7poZEGwrA7WssANx4xgJ6o4jBHAuFNMdv?= =?us-ascii?q?RXy2IuLlWWyUXS/MC1qaVj+jVWtroP88NcWqX3ZexsVrxRHTIrdW4x6dHgtRTZ?= =?us-ascii?q?C1bXznQZW2QS1BFPBl6Wv1nBQp7tv36i5aJG0y6AMJiuQA=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BMAgA5eBNYf6+hVdFdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgn8BAQEBAYF0B6QtjFGCU4UbggeGIwKBdwdBEgEBAQEBAQEBAQE?= =?us-ascii?q?BEgEBCQsLCRsygjMYghgBAQQSEQQZARsdAQMBCwYDAgsNKgICIQEBEQEFARwGE?= =?us-ascii?q?yKIFwEDF5Naj02BMj8yi0aBa4JfBYNZChknDVODEQEBAQEGAQEBAQEBGQIGEIs?= =?us-ascii?q?CgkeFBIJbBYElAZMUhSkrCAEBgSeGPoUagyiQBIhzhByCPxMegRElDYE3glaCG?= =?us-ascii?q?iI0AYdyAQEB?= X-IPAS-Result: =?us-ascii?q?A0BMAgA5eBNYf6+hVdFdHAEBBAEBCgEBFwEBBAEBCgEBgn8?= =?us-ascii?q?BAQEBAYF0B6QtjFGCU4UbggeGIwKBdwdBEgEBAQEBAQEBAQEBEgEBCQsLCRsyg?= =?us-ascii?q?jMYghgBAQQSEQQZARsdAQMBCwYDAgsNKgICIQEBEQEFARwGEyKIFwEDF5Naj02?= =?us-ascii?q?BMj8yi0aBa4JfBYNZChknDVODEQEBAQEGAQEBAQEBGQIGEIsCgkeFBIJbBYElA?= =?us-ascii?q?ZMUhSkrCAEBgSeGPoUagyiQBIhzhByCPxMegRElDYE3glaCGiI0AYdyAQEB?= X-IronPort-AV: E=Sophos;i="5.31,410,1473112800"; d="scan'208,217";a="242787933" Received: from mail-yw0-f175.google.com ([209.85.161.175]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 28 Oct 2016 18:12:43 +0200 Received: by mail-yw0-f175.google.com with SMTP id h14so92907372ywa.2 for ; Fri, 28 Oct 2016 09:12:43 -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=oRpeVPAi4XND+P1Uxe68+fpwOIoJ3m0JURfbkfWTNWA=; b=jwnn0eTT6eSSCeLLvoWVg49rmlAkyRVg/JJlU60YwHXq0SmQZrSRoBTb7mFHf7s7wT ptm8YA4rOhZbU9iKEXfOaHW2uabm6/8ZMjQW28zVkxMgLC2aZpxzv1b1jyfUUMEfAKFG xAcfsU2rAgp5wIcHfUM4akVN0To6N7Yi0DN7bcnZwQDoUKL0W3vRDlpu7YNYSQM8+iba M5NobWR1bb7VycisE/6x2v07qYRL4APNkGtk9Zkm9J3LKOL0Va5QgfiExMOt+l6UXiws gAypfu2vjAbEbjXfgj7p0q0tt0V/O5cq2p2qRh6+75VljfZ5KvNjyx9V4azysx6nY5pC aBuQ== 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=oRpeVPAi4XND+P1Uxe68+fpwOIoJ3m0JURfbkfWTNWA=; b=KZUR0Xx7AHint7DWl/LmZu3eknnJXp+C8ypP70mjRgOBOLUmduhYTijisMtPu0mdfM ONYPc6FcVAaLhMdnWk8o2Rtfmdnx7uh08FFFAexFTb1VnWa3x6MJQL7VdKL7LQa5Np00 yjBugqGMf1qdCAzVJj+w0lqnaZd9FKv+kCsS3xOI07ONP6IHZPG0RI5pGAdC8cw/rhtH 0xKgjdcf/6C3NQrKseqaDCPdJGZXc6I+HFHDNx8TMIf6FAl7mcpGcpFpstGP6LknRuCL +Qu0gwgTLxXcrH3dPs9F2r0bezaVMiIO1alAn7BqIGto+BDnILq2sX/OsBR6dUeC76uR hgCw== X-Gm-Message-State: ABUngve7a6G43plwmFIZDEWrXc9rkURMT0e2QjcinoqOipbqmznlZINUU8MvWYTJf+UpL5drWXZS8Dhj6HZl1g== X-Received: by 10.129.86.86 with SMTP id k83mr12790710ywb.256.1477671162078; Fri, 28 Oct 2016 09:12:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.39.202 with HTTP; Fri, 28 Oct 2016 09:12:21 -0700 (PDT) In-Reply-To: References: From: Shayne Fletcher Date: Fri, 28 Oct 2016 12:12:21 -0400 Message-ID: To: Nicolas Ojeda Bar Cc: "caml-list@inria.fr users" Content-Type: multipart/alternative; boundary=001a114329deb5f111053fef2055 Subject: Re: [Caml-list] Functor signature "inheritance" --001a114329deb5f111053fef2055 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Fri, Oct 28, 2016 at 9:28 AM, Shayne Fletcher < shayne.fletcher.50@gmail.com> wrote: > On Fri, Oct 28, 2016 at 9:25 AM, Nicolas Ojeda Bar < > nicolas.ojeda.bar@lexifi.com> wrote: > >> You can add a constrain to your functor arguments : >> >> module type MUL =3D functor (E : EQ) (N : NUM with type t =3D E.t) -> >> MUL_S with module N :=3D N and module E :=3D E >> > > =E2=80=8BThat does it! I tried so many different things :) You're a rock = 'n roll > star. > =E2=80=8BStill stuck on how to achieve this I'm afraid. 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_S =3D sig include EQ include NUM with type t :=3D t val mul : t -> t -> t end module type MUL =3D functor (E : EQ) (N : NUM with type t =3D E.t) -> MUL_S module Mul_default (E : EQ) (N : NUM with type t =3D E.t) : MUL =3D struct include E include (N : NUM with type t :=3D E.t) let mul (x : t) (y : t) : t =3D failwith "foo" end Yields. =E2=80=8BError: Signature mismatch: Modules do not match: sig type t =3D E.t val eq : t * t -> bool val from_int : int -> E.t val ( + ) : E.t -> E.t -> E.t val mul : t -> t -> t end is not included in MUL=E2=80=8B --=20 Shayne Fletcher --001a114329deb5f111053fef2055 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

= On Fri, Oct 28, 2016 at 9:28 AM, Shayne Fletcher <shayne.fletch= er.50@gmail.com> wrote:
On Fri, O= ct 28, 2016 at 9:25 AM, Nicolas Ojeda Bar <nicolas.ojeda.bar@le= xifi.com> wrote:
You can add a constrain to your functor arguments :

module type MUL =3D functor (E : EQ) (N : NUM with type t= =3D E.t) ->
=C2=A0 =C2=A0 MUL_S with module N :=3D N an= d module E :=3D E

=E2=80=8BT= hat does it! I tried so many different things :) You're a rock 'n r= oll star.

=E2=80=8BStill stuck on how to achieve this I'= ;m afraid.

module type EQ =3D sig
=C2=A0 type t
=C2=A0 val eq : t * t -&g= 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
end

<= div class=3D"gmail_default">module type M= UL_S =3D sig
=C2=A0 include EQ
=C2=A0 include NUM with type t :=3D t=

= =C2=A0 val mul : t -> t -> t
end

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

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

=C2=A0 incl= ude E
=C2=A0 include (N : NUM with type t :=3D E.t)

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

end

Yields.

=E2=80=8BError: Signature mismatch:
=C2=A0 =C2=A0 =C2=A0 =C2=A0M= odules do not match:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sig
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0type t =3D E.t
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0val eq : t * t -> bool
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0va= l from_int : int -> E.t
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0val ( + = ) : E.t -> E.t -> E.t
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0val mul= : t -> t -> t
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0end
=C2=A0 =C2=A0 = =C2=A0 =C2=A0is not included in
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0MUL=E2=80= =8B

--
Shayne Fletch= er
--001a114329deb5f111053fef2055--