From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=raedY918; dkim=pass (2048-bit key; secure) header.d=mpi-sws.org header.i=@mpi-sws.org header.a=rsa-sha256 header.s=mail202309 header.b=HMMnhpLk; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id A86A740016 for ; Wed, 4 Jun 2025 09:16:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=mime-version:from:in-reply-to:date: content-transfer-encoding:message-id:references:to: subject:reply-to:sender:list-id:list-help:list-subscribe: list-unsubscribe:list-post:list-owner:list-archive; bh=36slATR0XKf6gxnvTgJn4XJk7UOgSOv/UfIfNHxG3/Q=; b=raedY918Ftmqvsb6lXD4Zv/3yZj0bvm8jeEQnzTbkXgLgGz6TSlsXfNs AjKrNsvZVnbbbj/Fg/9VhbC3znRYAciELFun0v21a13s79grO3xH0NQ9/ mlvGRrOJGOUIAE0nGwnsk8BOYabauGvJ2WG8byZ8ZuZA5rHyJbEG520Zl s=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=pass (signature verified) header.i=@mpi-sws.org X-IronPort-AV: E=Sophos;i="6.16,208,1744063200"; d="scan'208";a="225257690" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 04 Jun 2025 11:16:26 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id C7330E0CCC; Wed, 4 Jun 2025 11:16:25 +0200 (CEST) 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 CED5DE0131 for ; Wed, 4 Jun 2025 11:16:21 +0200 (CEST) IronPort-SDR: 68400ee5_tywg6biX6CuSNXZ0tm1yqZmjZwtKKU5/PMoA/m/U1iUVB/x CCLxt22HVaU+ewr81hmNzi+E550nFGkQ2NCR/1A== X-IPAS-Result: =?us-ascii?q?A0EFAADwDUBohQ9WE4tQChoBAQEBAQEBAQEBAwEBAQESA?= =?us-ascii?q?QEBAQICAQEBAUCBQQMBAQEBCwGCQ0ABgRoyBAtJhFWIe4ZVgiEDnhaBfw8BA?= =?us-ascii?q?wENTgECBAEBAwEDhQACi14CHgwGLAcOAQIEAQEBAQMCAwEBAQEBARABAQUBA?= =?us-ascii?q?QECAQECBAYBAhABAQEBQEmFew2CWzuCFiwNfQEBAQECASMEGQEBOAQLCwwMA?= =?us-ascii?q?gIYDgICVhmDAoInJCQDrUB6fzOBAYIMAQEGgmjbHwmBGy4BiE8BhWxEhDMnG?= =?us-ascii?q?4INgTwbgmg+hBYtg1s6gi+CKIEWig2WVkgKYhY2QiwBVRMNCgsHBVtFQwM1D?= =?us-ascii?q?AsuFSNLBS0dgg2FGR+Bc4FcAwMWDwGCJIFeHIRihEkrT4MkgX9lQYNhFA0Gg?= =?us-ascii?q?QdAAwsYDUgRLDcUGwY+bgeXXINwWDWCGJQ3snyEJYRwjmeOSYQEk1UGM5JPm?= =?us-ascii?q?QSjMz8mNwGEaIFvBi2BXE0wCBohKgGCPD8QAxkPjiEZiHqyJEI0PAIHAQoBA?= =?us-ascii?q?QMJhUUBAQGLA4FLAQE?= IronPort-PHdr: A9a23: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 TvJSycL0RyGjzisTA+0d+ZWg3PGVCE= IronPort-Data: A9a23:fa0ZY6rlAGC61FGWCeTF09sZHVheBmLjYRIvgKrLsJaIsI4StFCzt garIBmHMvvYN2vyctlwati1p0ID68CEydFnTgZo+SE9Q3gSpePIVI+TRqvSF3PLf5ebFCqLz O1HN4KedJhsJpP4jk3wWlQ0hSAkjclkfpKlVKiefHoZqTZMEE8JkQhkl/MynrlmiN24BxLlk d7pqqUzAnf8s9JPGjxSsvzrRC9H5qyo5WtG5gBmP5ingXeH/5UrJMJHTU2OByCgKmVkNrbSb /rOyri/4lTY838FYj9yuuuTnuUiG9Y+DCDW4pZkc/DKbitq+kTe5p0G2M80Mi+7vdkmc+dZk 72hvbToIesg0zaldO41C3G0GAkmVUFKFSOuzdFSfqV/wmWfG0YAzcmCA2kYFog06sgmKFtj0 uQ3EhxcRy3Et8eflefTpulE3qzPLeHpIZsepnx6izTBDLMlRYvJBaDS6plU0V/chOgXRqeYP ptfOWQpNUmojx5nYj/7DLokm/yzjHTlfBVdsFPQvrUspW/Jw2Sd1ZC3aoePJ4PXFJk9ckCw+ 06Z4lvDMDIgEOOw1me+8jWUrbeSgnauMG4VPOforqU33DV/3Fc7AxQTUR6/oOKlolWvXspWb U0S4Csn66YonHFHVfH/QgW5vHOe+BsEWp9TF/YwrgSVxezY7m51G1ToUBZvQ9kKpOFnbAYH8 Uempf+4LAEogJi8HCf1GqivkRu+Pi0cLGknbCACTBcY79SLnG3Vpk6QJjqEOPLl5uAZCQ3NL ya2QD8Wq5h7sCLm/6em5VHbjijqo4DICw0x/Q+RW3qqqA90DGJEW2BKwQeHhRqjBN/HJrVkg JTis5PGhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB42bpZVJmK0P xGM5F85CHpv0J2CNvQfj2WZV51C8EQcPY+Nug38MIcTOcYZmPGvonA0DaJv44wduBJ8yfpiZ f93gO6pBGZfEaBuyjG1AuYbyqMq2j0ijW3OSIqzzhKp1qCbbWKUSt843KimM4gEAFe/iFyNq b53bpLaoz0BC7eWSneMruYuwaUidiNT6Wbe8JcPLrbrz8sPMD1JNsI9Npt6JNI/wvQPzLiSl px/M2cBoGfCabT8AV3iQhhehHnHB/6TdFpqbHR+DkXiwHU5f4ek4YEWcpZ9L/Ft9/VuwbQwB 7MJctmJSKYHADnW2SUvXb+kpqxbdTOvmV2vOQiha2MBZJJOfVHC1eLlWQrNzxMwKBSLm/Ewm JCe8z/KYIEiQl1iBfnGafj0wFKWu2Mcqd1IXEDJA4dyfV21+6ducx7Br+I9E+sUDSrf3TDA9 hucMT0egez3p64079j7qqSWpKi5E+ZFPxR7HkuKyZ2UJCXl7m6Y7osYa9mxfBfZT3HR1Jy5Q Pd8ltXQAaYip0lblYhWH5JA77MM1/G2q5B0lg1bTWj2NXK1AbZeE1y69MhotJwV4IRGuAGzC 3m9yvMDNZqnYMraQUMsfiw7ZeG+1NYRqDnYzdIxBG7YvCZX3r62YX9+Dim2qh52DeVKads+4 OIbpsQpxRS1iUMqPva4nylkzTmwAUJaYZo3lKMxIdHNsRUq+GFgcJaHKy7R4bOzUftuHHQuA AepgPvlu+wB6GvEK2E+BFrc79p73J4ugi1H/HUGBlaOm+fGuMMJ4Q1swWw3YzlRnzp60LNVG 2l0NkdKC72E0BV2ieNiAW29OQFzKyeI2072ylE5vnX9f2/zXX2QMmY4Muep12Ia+lJ6YTJ00 uy5ymHkcDCyZ+D3/HI4dnBEoszZb+5a11P9iuH+OOrdBLg8Qz7uopH2VFoysxG9XP8A3hzWl 9dl7MNbSPPdNxdJh4YZFoPD97AbaC7cFVx4Wfs7oZ84RzDNSgqThwqLBVu6IP5WBvrw9kS9N cxiC+RPWzm61weMtjorPrENEZAlgM8W4Mc+RZ2zKV4kq7e/qh9bgKDU/AX6h04pRIxKuuQ5I YXzaTmDMzKxgV15pmzzl/RHa1GIOYQ8WA7B3e6O4LooEbAHu7pSak0c6Oa/kEiUFwpFxCiqm j3/SZXY9dE/9rQ0rbDQSv1CIy6WNeLMUP+59VHvktZWMvLKH8T8lyIUjVjFIw95PqcaANhls bHcoezm/VjkuYwuWDvzgKixFKhu5OSzUtFIM8nxEmJooCuaVOLo4DoB42qdK6EVoOhC58Kie RS0WPGwefERRd1Z4n9fMApaLDowFIX1af3GiR6mjvHRFCUY7xPLHOmn+VDtc2tfUC0CYL/6K w3svseR9sJql5tNCDAEFsNZLcdBenG7YpQfdvr1qTW8JUuriAnburLdyDwR2QuSAXyASMvH8 ZbJQyblTyuLuYbK8cp4trJjtRhGHVd/hugNJngmweBUsAzjLmA6LrU6C64kW6Fkynm4kNmyY TzWd2ItBBnsRTkOI122/N3nWRzZHeAUfMvwIjsy5U6PdiOqH8W6DaB88jt7qWJDEtc5IDpL9 flFkpExAvSw/n2tbeQO/v2njP0hw+vbg3EM4kq7ltT9RRoTaVnPOLqNAyIVPREr0emU/KkIG YTxbWVcQQSgVlW3FtxvE5KQ9Nf1oxuypwjFrk6zLBL3vp2aifZf07v4Ie6bPnjvqigVDOZme E4bjFdhL4xbNrL/dEfpVx8UbXdINM+2 IronPort-HdrOrdr: A9a23:gpdbbqgObBvsLYaXQXa6B6hibHBQXs8ji2hC6mlwRA09TyX4ra GTdZsgpHzJYVoqM03I+urvBEDjex/hHPdOiOEs1NGZNjUO01HGEGgN1+bf6gylMSv46+ZWyO NBfsFFaOHNMQ== X-Talos-CUID: 9a23:+qvY325HemEP5HbkNtss2mURNtALI1Tn4VDIDHWUWE9UD42wYArF X-Talos-MUID: =?us-ascii?q?9a23=3ApS7VNQ/ZA2Q6cgRCGYICTpmQf5pEvLmRMnIuq7E?= =?us-ascii?q?5lNbZDiw3AxzF0SviFw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.16,208,1744063200"; d="scan'208";a="225257594" X-MGA-submission: =?us-ascii?q?MDF1wHb9p/IXCsLB3rgMi4d6e8NQOJaoDIOPUU?= =?us-ascii?q?qkRzo6WSEnF/O6hvkV0kC3Iz+waXq9OhL3awZ+73kk3NjPNNSKBCTqkk?= =?us-ascii?q?y8pldEU0Kv2wJVelrJcMDEihLXIR0nbkZQYsK9JyopRcrw8lp3Tx9ytp?= =?us-ascii?q?s39yPnUPSllPdc7eR/O6MTLQ=3D=3D?= Received: from jupiter.mpi-klsb.mpg.de ([139.19.86.15]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2025 11:15:41 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mpi-sws.org ; s=mail202309; h=To:References:Message-Id:Content-Transfer-Encoding:Date: In-Reply-To:From:Mime-Version:Content-Type:cc:content-id:content-description; bh=36slATR0XKf6gxnvTgJn4XJk7UOgSOv/UfIfNHxG3/Q=; b=HMMnhpLk8EurfITAv24bhX9yNG NBpzjT+fpdyn6SQ2+uuLnQC5h+KXp/Itf3JxUkfpZzJoGFATMMFVTfIXHYQs5ujru2uOKchuGuQW2 Tqhf1eaRK7RCglRUucIHt46UnvA7NKAsXSFJcGiJwt1yI1pvJ1meIBmE+TA3OXjbpfELyIrTajNyr FLoFLfVW91cCUyS1jAPV9xVmHL4R7835LtZYfm3ml2zyl2SFCB+NdKqAEPyjxPqf4SMTRbvEaFQNa p0YuSYKh5X5r7BECYmyYuCzbNcggnCPxQolo+3C4q0orj8m6OkJhSf9nrF0oL3mgDtRt62q2HMP40 4d4rr86w==; Received: from srv-23-0408.mpi-klsb.mpg.de ([139.19.205.27]:43620 helo=zak.mpi-klsb.mpg.de) by jupiter.mpi-klsb.mpg.de (envelope-from ) with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98.2) id 1uMkDh-00000002J8q-3x17; Wed, 04 Jun 2025 11:15:40 +0200 Received: from [173.239.216.30] (port=45565 helo=smtpclient.apple) by zak.mpi-klsb.mpg.de (envelope-from ) with esmtpsa (TLS1.2:ECDHE_SECP256R1__RSA_SHA256__AES_256_GCM:256) (Exim 4.96) id 1uMkDh-00BFdq-1R; Wed, 04 Jun 2025 11:15:37 +0200 Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) From: Andreas Rossberg In-Reply-To: <62c6640c-d06c-4103-b479-5dace4b5cfaf@polychoron.fr> Date: Wed, 4 Jun 2025 11:15:26 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <9A38CD29-0F78-43D3-931D-E0F8FDCA0311@mpi-sws.org> References: <26E93D7A-BAF3-46FB-8CAF-8DA7F7DEAF6B@mpi-sws.org> <62c6640c-d06c-4103-b479-5dace4b5cfaf@polychoron.fr> To: caml-list@inria.fr X-Mailer: Apple Mail (2.3826.600.51.1.1) x-ms-reactions: disallow Subject: Re: [Caml-list] Warning 69 (unused record fields) and polymorphic reads Reply-To: Andreas Rossberg X-Loop: caml-list@inria.fr X-Sequence: 19336 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: Excellent, thanks L=C3=A9o and Florian! This is the information I was = looking for (and can=E2=80=99t find in the manual ;) ). /Andreas > On 3. Jun 2025, at 11:23, Florian Angeletti = wrote: >=20 > Those warnings can be suppressed on the type definition by adding a = `@@warning` attribute > module M: sig type t end =3D struct > type t =3D { x:int; y:int } [@@warning "-unused-field"] > end > With this attribute, the compiler will not register those fields for = the usage checker and thus no unused > warning fields will be emitted for the fields `x` and `y` >=20 > For this specific warning, the compiler even supports disabling the = usage checker field-by-field. > For instance, this code will only disable the warning for the `M.x` = field, and thus warns > module M: sig type t end =3D struct > type t =3D { x:int[@warning "-unused-field"] ; y:int } > end > that the field `y` is being unused while omitting the check for the = field `x`. >=20 > =E2=80=94 Florian. >=20 > Le 03/06/2025 =C3=A0 11:11, Andreas Rossberg a =C3=A9crit : >> Today, I ran into a slight annoyance with warning 69 (unused record = fields). Obviously, the warning does not consider uses of polymorphic = operators like `=3D` or `compare`, which technically are reads of the = fields. Unfortunately, it turns out that there are reasonable use cases = where these are the _only_ reads, resulting in bogus warnings. >>=20 >> There probably isn't much that can be done about it(?), since such = access could hide in any polymorphic function invocation. Hence I = didn=E2=80=99t file a bug. But for the record, I thought I'll show the = counter example anyway. >>=20 >> Consider code that implements some processing akin to SQL `group by`, = as in: >> ``` >> SELECT artist, album, COUNT(*), SUM(time), ... FROM Tracks GROUP BY = artist, album; >> ``` >> Intuitively, this extracts all known albums from a list of track = (song) meta data, and computes their total running time, among other = values. >>=20 >> Here is a sketch of how to achieve something similar in OCaml: >> ``` >> module GroupKey =3D >> struct >> type t =3D {artist : string; title : string} >> let compare =3D compare >> end >> module GroupMap =3D Map.Make(GroupKey) >>=20 >> type track =3D ... >> type acc =3D ... (* result type *) >> val empty_acc : acc >> val accumulate : entry -> acc -> acc (* combine result *) >>=20 >> let albums =3D >> tracks >> |> List.fold_left (fun map (entry : track) -> >> let group =3D {artist =3D entry.artist; title =3D entry.title} in >> let acc =3D Option.value (GroupMap.find_opt group map) ~default: = empty_acc in >> GroupMap.add group (accumulate acc entry) map >> ) GroupMap.empty >> |> GroupMap.bindings |> List.map snd >> ``` >> The only purpose of the `GroupKey.t` type in this code is to identify = entries belonging to the same group. Its fields are read implicitly by = `GroupMap.find/add`, which invokes `compare` on them. Yet, this code = produces warnings that `artist` and `title` are never read, which = technically isn=E2=80=99t quite correct. >>=20 >> In my actual code, the key record has more fields, which is why I = didn=E2=80=99t want to replace it with a tuple. >>=20 >> Perhaps there is some annotation magic I=E2=80=99m missing that could = be applied to the type definition to suppress the warning? >>=20 >> /Andreas >>=20 >>=20 >=20