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 0AB967FA5E for ; Tue, 9 May 2017 05:50:33 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gabriel.scherer@gmail.com; spf=Pass smtp.mailfrom=gabriel.scherer@gmail.com; spf=None smtp.helo=postmaster@mail-io0-f170.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of gabriel.scherer@gmail.com) identity=pra; client-ip=209.85.223.170; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of gabriel.scherer@gmail.com designates 209.85.223.170 as permitted sender) identity=mailfrom; client-ip=209.85.223.170; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@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-io0-f170.google.com) identity=helo; client-ip=209.85.223.170; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-io0-f170.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3Anp/NuhAEPUF+6/bv1d8IUyQJP3N1i/DPJgcQr6Af?= =?us-ascii?q?oPdwSPv/rsbcNUDSrc9gkEXOFd2CrakV16yO6+jJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMizexe69+IAmrpgjNq8cahpdvJLwswRXTuHtIfO?= =?us-ascii?q?pWxWJsJV2Nmhv3+9m98p1+/SlOovwt78FPX7n0cKQ+VrxYES8pM3sp683xtBnM?= =?us-ascii?q?VhWA630BWWgLiBVIAgzF7BbnXpfttybxq+Rw1DWGMcDwULs5Xymp4aV2Rx/ykC?= =?us-ascii?q?oINTA5/mHZhMJzkaxVvg6uqRNkzo7IeYGYLuZycr/Bcd4YQ2dKQ8ZfVzZGAoO5?= =?us-ascii?q?d4YBDvAOMv1Cr4n8uVQOqQa1CxSwC+Pv1DBInGH53bcn2OkmHgHJxhcvH8gPsH?= =?us-ascii?q?vKqNX5LrwSXvy1zKbW1zXMcelW1Czy6IjNaB8hoPWMUahsfsrWzEkiDgXIhUiT?= =?us-ascii?q?p4z9Jz6ZyPgBvmyB4+djVe+jkXArpx9/rzS128shiJXFi4QIwV7e7yp52pw6Jd?= =?us-ascii?q?igRU57f9GkFJxQujmfN4RsQ8MiR3hkuCc9yrEaoJK7cjUGxZY7yxLFZPyHdI+I?= =?us-ascii?q?4h3nVOmPOzt3mHVleLenixaz90iv1PH8W9Gq3FpWqidJiNrBu3AX2xDN9MSKRO?= =?us-ascii?q?Fx8lqj1DqTzwzT7/tLIUEwlarVMZ4hxbswm4IcsUvZBSD2gkT2g7GSdkk+4ein?= =?us-ascii?q?9+Tnbav8ppCCLY95kQ7+MqE0lcy+BeQ0KBQBX2+e+eikzr3s4VX5QKlWjv0xiq?= =?us-ascii?q?TWrIrVJcEfpqKgBw9V050j6wqkAje90NUYmGEHI0hfdBKGiYjpIVDOL+riAfex?= =?us-ascii?q?mVT/2AtsksrLM7GpPZTJNX/F2OPqcLp870pV4AU2xNFboZlTD+dSDuj0Xxrevd?= =?us-ascii?q?bCDxI9eze/w+v9Bc81gowXU3iOD6vfK6jSvEWF/MogJuCNYMkevzOreKtt3OLn?= =?us-ascii?q?kXJswQxVRqKux5ZCMH0=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CHDAB7OxFZf6rfVdFcGwEBAQMBAQEJA?= =?us-ascii?q?QEBFgEBAQMBAQEJAQEBhQYSB4Nim2+YAYYkAoRgB0QTAQEBAQEBAQEBAQESAQE?= =?us-ascii?q?JCwsIJjFCEAGBYCCCQwECAyMEGQEbHQEDDAYFCwMKAgImAgIhAQERAQUBHAYTi?= =?us-ascii?q?gcBAxWmAz+MCIFsGAUBHIMKBYNZChknDVaCYgEBAQEBBQEBAQEBGwIGEnmFVIR?= =?us-ascii?q?FNIJUgg+DCoJfBZEijBw7ghCMNoRSkWyLKYdNFB+BFTeBKi8gIVsZhEyCLiA2g?= =?us-ascii?q?zqFOwEBAQ?= X-IPAS-Result: =?us-ascii?q?A0CHDAB7OxFZf6rfVdFcGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBhQYSB4Nim2+YAYYkAoRgB0QTAQEBAQEBAQEBAQESAQEJCwsIJjFCEAGBY?= =?us-ascii?q?CCCQwECAyMEGQEbHQEDDAYFCwMKAgImAgIhAQERAQUBHAYTigcBAxWmAz+MCIF?= =?us-ascii?q?sGAUBHIMKBYNZChknDVaCYgEBAQEBBQEBAQEBGwIGEnmFVIRFNIJUgg+DCoJfB?= =?us-ascii?q?ZEijBw7ghCMNoRSkWyLKYdNFB+BFTeBKi8gIVsZhEyCLiA2gzqFOwEBAQ?= X-IronPort-AV: E=Sophos;i="5.38,312,1491256800"; d="scan'208";a="222907102" Received: from mail-io0-f170.google.com ([209.85.223.170]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 09 May 2017 05:50:31 +0200 Received: by mail-io0-f170.google.com with SMTP id f102so62219751ioi.2 for ; Mon, 08 May 2017 20:50:31 -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:content-transfer-encoding; bh=QWfQ4NEdgKylxCPd1YirTEhou2q5VWa2kkqEIwQMRGc=; b=NSfGpFsAHf57BRr0d7ciRHiU7l8WmAr7ZAk2OeHJQemCBB+zEv/gKa0+vCkrrLMKOI mGvy31/p2j+hdQ5YM3C7ofqbsDD9LVnBm+mWYoLHXqOGfm17pRBnPKb2xfcxht1q+Xcv Y9Rk06Eg2/vN+k+j4uO2SXPE47sjYPArptk6GmXdGlIWXhjgUKZKPpIMxkXzD5L2lPku c51GfStMLv/odudXrsPFGCEIOzgxwwlNiOkljyywIn+hdgXiH8Y4Oa2XFGADnyKYBuPD UULdpQtHPyca0dnY4OlVXFlbUS1GLYY4MZWh6kvealRsukSAiBxLSgJPdu+x0rAbrv9D 6O6g== 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:content-transfer-encoding; bh=QWfQ4NEdgKylxCPd1YirTEhou2q5VWa2kkqEIwQMRGc=; b=Lskfu+mJ0X4lv+SKouI/1kJuk4GSDcfkPIIaP4eHIHYd1OKj00ijPVkGfTDGxI7DR2 bKUdZL7zoV6cxVzn9fTMJdUQOC/pKhe0y+Ti82h0IfustymLDayeVroY3oCeEC9Gp1Kc 749bDvzZ5LTwnzQIvytINhcaGeUuER05t5LHQc5K7BvByEOB5yQI2IOzcM19bKdbkjoG 1p6W5nDXmrTMZOrXMcVwvRYWUqPfdjcj7HN3nwJ0fTFm5+F/kY7LHOAGDsrzH4zUTQax kl5ff0uW8SIMZ2W5QqbuOmn9VHviz9tQnn1/EKpiHpEUhcnMq0o0d6y49JjgppVKaIji m8MQ== X-Gm-Message-State: AODbwcArhLkXQNoHI83k3yVIFIFwYGqA0DEtlKbajmUS63zngMipXRYz 3phrA8/sfn2E2pFFr7g5+9e5ljasOA== X-Received: by 10.107.35.20 with SMTP id j20mr122594ioj.35.1494301830443; Mon, 08 May 2017 20:50:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.39.196 with HTTP; Mon, 8 May 2017 20:49:49 -0700 (PDT) In-Reply-To: References: From: Gabriel Scherer Date: Mon, 8 May 2017 20:49:49 -0700 Message-ID: To: Reed Wilson Cc: caml users Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Caml-list] Type generalization confusion This is the value restriction at work: only values are generalized (often of the form "fun x -> ..."), and while (Int 3) is a value, (Int (1 + 2)) is not. On Mon, May 8, 2017 at 11:32 AM, Reed Wilson wrote: > I've been working with some of the new features introduced with GADTs, and > ran into a confusing instance of the "type variables that cannot be > generalized" error. > > The simplified program is as follows: > type _ field =3D Int : int -> 'a field > let a =3D Int 3 > let b =3D Int (1 + 2) > let inside =3D 1 + 2 > let c =3D Int inside > > ocamlc -i returns: > type _ field =3D Int : int -> 'a field > val a : 'a field > val b : '_a field > val inside : int > val c : 'a field > > with b remaining non-generalized. The problem I'm having with it is that = the > type variable doesn't depend on the value at all, so I don't see how that > can prevent generalization. > > Also, the manual says the reason some types aren't generalized is due to > "polymorphic mutable data structures". Nothing I created is mutable, so w= hy > was generalization turned off in the first place? > > Finally, I'm confused why separating the function from the definition is > enough to fix this; c is generalized simply by defining 1+2 in a separate > value (which must be global, apparently). > > Thanks, > Reed Wilson > > -- > =C3=A7