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 5B0E87EE11 for ; Fri, 22 Aug 2014 04:24:16 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of blg59@cornell.edu) identity=pra; client-ip=209.85.217.182; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="blg59@cornell.edu"; x-sender="blg59@cornell.edu"; x-conformance=sidf_compatible Received-SPF: Neutral (mail3-smtp-sop.national.inria.fr: domain of blg59@cornell.edu does not assert whether or not 209.85.217.182 is permitted sender) identity=mailfrom; client-ip=209.85.217.182; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="blg59@cornell.edu"; x-sender="blg59@cornell.edu"; 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-lb0-f182.google.com) identity=helo; client-ip=209.85.217.182; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="blg59@cornell.edu"; x-sender="postmaster@mail-lb0-f182.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aj4DANuo9lPRVdm2m2dsb2JhbABZhDuCeKw9BoNCoSwBJWIIFhABAQEBAQYLCwkUKYN6AQkBAQQSEVYQCwMBBzcCAiISAQUBHDQHhVSCTKJWa4srkFCEQhcKhXKJUAeCeQ+BRAEEnEeTGBgphSshgn4BAQU X-IPAS-Result: Aj4DANuo9lPRVdm2m2dsb2JhbABZhDuCeKw9BoNCoSwBJWIIFhABAQEBAQYLCwkUKYN6AQkBAQQSEVYQCwMBBzcCAiISAQUBHDQHhVSCTKJWa4srkFCEQhcKhXKJUAeCeQ+BRAEEnEeTGBgphSshgn4BAQU X-IronPort-AV: E=Sophos;i="5.04,377,1406584800"; d="scan'208";a="75777365" Received: from mail-lb0-f182.google.com ([209.85.217.182]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 22 Aug 2014 04:24:15 +0200 Received: by mail-lb0-f182.google.com with SMTP id z11so8938423lbi.13 for ; Thu, 21 Aug 2014 19:24:14 -0700 (PDT) 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:cc:content-type; bh=VZhSUsyhzdVnAISfKszFYadyTLZgLdMAdcV2QjorFUQ=; b=VTwB7JibxzvHP4a/NbTbWZzfS40+zC+GK6OImE55065qXk7fyMZk5siTVoHKehwvDo hm28cDwjlFcxLwWnQOZWbAUj18e7msPeJleHJhOqz69k+zASyBFXtXOsaSm6QQuxJ0VD u9CJa1PMa7WbvySf/9qM5e7Ry5erIq5IIrKQJ3Sh4mAdp8FSxc6Gr5mpMKp3EkC84C0E XnLo5DgNpp3Fl10rRCz1/FaZlw92cXyiyTNyq+0jNNdJLXZP42dGP/CJb7ysY9GWcMUy 6NEwGxM0YqK+GfqWAtUqsiMreGmjDi80S5MT/nbXxY2nZRCqiQ6TCxli01hmS9Q746Iq EUlQ== X-Gm-Message-State: ALoCoQlvAV3IoSjTr8ReMPhbgJqzReFzmK//yA8dmg6nyIMibEhkzTSIVxWS6/iH7sQx61ZUOGau X-Received: by 10.152.22.165 with SMTP id e5mr1849583laf.57.1408674254061; Thu, 21 Aug 2014 19:24:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.149.74 with HTTP; Thu, 21 Aug 2014 19:23:54 -0700 (PDT) In-Reply-To: <21493.18720.441084.32472@gargle.gargle.HOWL> References: <1408559896.43780.YahooMailNeo@web121705.mail.ne1.yahoo.com> <21493.18720.441084.32472@gargle.gargle.HOWL> From: Benjamin Greenman Date: Thu, 21 Aug 2014 22:23:54 -0400 Message-ID: Cc: OCaml mailing-list Content-Type: multipart/alternative; boundary=089e0158c3068495de05012e8805 Subject: Re: [Caml-list] Locally abstract type with type parameters --089e0158c3068495de05012e8805 Content-Type: text/plain; charset=UTF-8 I agree with the solution in the second link: if you want a certain condition to hold on the parameter, it needs to be made explicit. As for whether this restriction is necessary, I believe it is because I don't see any way of deciding the question 'a Monad.t = 'a u without examining the abstract type hidden in a particular Logger. What if you made LOGGER a functor parameterized on a Monad? --089e0158c3068495de05012e8805 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I agree with the solution in the second link: if you want a c= ertain condition to hold on the parameter, it needs to be made explicit. As= for whether this restriction is necessary, I believe it is because I don&#= 39;t see any way of deciding the question 'a Monad.t =3D 'a u=C2=A0without examining the abstract= type hidden in a particular Logger.

What if you made LOGGER a fun= ctor parameterized on a Monad?
--089e0158c3068495de05012e8805--