From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id 87F085D6 for ; Fri, 9 Aug 2019 14:48:53 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.64,364,1559512800"; d="asc'?scan'208";a="394970542" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 09 Aug 2019 16:48:52 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id B13CE7ED21; Fri, 9 Aug 2019 16:48:52 +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 4B8DD7ED21 for ; Fri, 9 Aug 2019 16:48:41 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=martin@derivation.org; spf=Pass smtp.mailfrom=martin@derivation.org; spf=None smtp.helo=postmaster@rhea.htu.tuwien.ac.at IronPort-PHdr: =?us-ascii?q?9a23=3AW9Nnlx9AfqX0l/9uRHKM819IXTAuvvDOBiVQ1KB4?= =?us-ascii?q?0ugcTK2v8tzYMVDF4r011RmVBN+dsqsbwLWH+4nbGkU4qa6bt34DdJEeHzQksu?= =?us-ascii?q?4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1?= =?us-ascii?q?Ov71GonPhMiryuy+4ZLebxhWiDanfL9+MRe7oQrTu8QSnIBvNrs/xhzVr3VSZu?= =?us-ascii?q?9Y33loJVWdnxb94se/4ptu+DlOtvwi6sBNT7z0c7w3QrJEAjsmNXs15NDwuhnY?= =?us-ascii?q?UQSP/HocXX4InRdOHgPI8Qv1Xpb1siv9q+p9xCyXNtD4QLwoRTiv6bpgRRn1gy?= =?us-ascii?q?kFKjE56nnahNFugqJVoByvpBJxzIHWb46JL/d+cb/RcMkdS2ZdQspcVSpMCZ68?= =?us-ascii?q?YYsVCOoBOP5VoY7nqFsUsRu+BA+sD/7zxD9JmHD227M10/48GgzB2QwvBcgOsG?= =?us-ascii?q?jVrNXzL6odTP66zLPJzTXddfxWxTb96I/Ochw7pvGMR71wfNPXxEIyFA3Flk2d?= =?us-ascii?q?pZH7Mz6WzOgBrmaW4/Z6We+ri2MrsR99rzepy8wxkIfGnJgVxUrB9ShhwIY6O9?= =?us-ascii?q?m4SEljbN6+EJtfqTuVO5F2QsM+XmFkojo6yqAIuJ66YicKzo4ryATDZPCdaYeI?= =?us-ascii?q?/grvVOeXIThmmHJoYK+ziwix/ES61+HxWNW43ExOoydFiNXAqH8A2wTW6sedS/?= =?us-ascii?q?t9+kmh2SyI1wDW8uxEJFo7lbDHK54gxL49jYccvlrZHi/3hkX5lrOWdkQj+uiu?= =?us-ascii?q?8ejnZa/mppCEO49ulg7+KrgumtC4AekgLgcBRW2b+eCl2L3n/E35W6lKg+Ytkq?= =?us-ascii?q?jZtZDaPd4UqrS4Aw9TyIYj6gywAy2o0NQCzjE7KwdOcReDyozoIE3mIfbiDP75?= =?us-ascii?q?jU7/vi1swqXjN6f9A5OFFHnOlrr7NeJ44lRAyQwbwd1F5oxdFrAGJrT0QECn54?= =?us-ascii?q?+QNQMwLwHhm7WvM956zI5LATvSUJ/cC7vbtBqz3sxqI+SIY9VO6iz9JvFj5+Lz?= =?us-ascii?q?y2Mkhl4Qe++g1t0edCLgR6U0EwCieXPpx+w5PyIPtws6QvbtjQTcAzJefXesVr?= =?us-ascii?q?494Td9D5ipX96aGtKdxYeZ1SL+JaV4I3hcAwnSQ3vlbYSaUusNbyTUJdVuwGQJ?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CNAQBFh01d/xhfgoBmHgEGBwaBVgYLA?= =?us-ascii?q?YIXgT4zhEiRBi2DZ5cjCQEDAQcFLwEBhD8CgmEbBwEEMwYOAQQBAQQBAQQBAwc?= =?us-ascii?q?BbIUzgjoigm8BBSNmCxgqAgJXgzsBggqrRIEyiQOBORCBNIFRiiqBf4E4gms+h?= =?us-ascii?q?RGCPoJYBKpYbQmCH2KCToIjjlYhdJdEpXiBZiKBWDMaCCgIO4JtkQhAjz8BAQ?= X-IPAS-Result: =?us-ascii?q?A0CNAQBFh01d/xhfgoBmHgEGBwaBVgYLAYIXgT4zhEiRBi2?= =?us-ascii?q?DZ5cjCQEDAQcFLwEBhD8CgmEbBwEEMwYOAQQBAQQBAQQBAwcBbIUzgjoigm8BB?= =?us-ascii?q?SNmCxgqAgJXgzsBggqrRIEyiQOBORCBNIFRiiqBf4E4gms+hRGCPoJYBKpYbQm?= =?us-ascii?q?CH2KCToIjjlYhdJdEpXiBZiKBWDMaCCgIO4JtkQhAjz8BAQ?= X-IronPort-AV: E=Sophos;i="5.64,364,1559512800"; d="asc'?scan'208";a="394970452" X-MGA-submission: =?us-ascii?q?MDE16KpfmBaLr/XL/gZu4MSrIwYYDMWjvEbnwS?= =?us-ascii?q?/hQRXHnsGfp02YlC/bUfypR1Kap8V/w7H2T+RmQY9wal8zS5SMEHLbYW?= =?us-ascii?q?Q1vchs07FqNdEsWjg4AuqWxc3MxlBhnSP85Vsqmkpkziw1WCo7uQ+4S5?= =?us-ascii?q?NHg1/hNCXfzXQxR/jIhs7kFg=3D=3D?= Received: from rhea.htu.tuwien.ac.at ([128.130.95.24]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Aug 2019 16:48:40 +0200 To: caml-list@inria.fr References: <20190809142719.ff4kogz4fq6r7vfr@annexia.org> From: Martin Riener Openpgp: preference=signencrypt Autocrypt: addr=martin@derivation.org; prefer-encrypt=mutual; keydata= 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 Ay00 Message-ID: Date: Fri, 9 Aug 2019 16:48:34 +0200 MIME-Version: 1.0 In-Reply-To: <20190809142719.ff4kogz4fq6r7vfr@annexia.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="eYNj7NUdiv6hOf5vGSENXO4ZOO6wvtyes" Subject: Re: [Caml-list] Syntax puzzle / suggestion Reply-To: Martin Riener X-Loop: caml-list@inria.fr X-Sequence: 17753 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --eYNj7NUdiv6hOf5vGSENXO4ZOO6wvtyes Content-Type: multipart/mixed; boundary="4cBmhtN80KceTM4eDLGcNFwVLBuhtUrTY"; protected-headers="v1" From: Martin Riener To: caml-list@inria.fr Message-ID: Subject: Re: [Caml-list] Syntax puzzle / suggestion References: <20190809142719.ff4kogz4fq6r7vfr@annexia.org> In-Reply-To: <20190809142719.ff4kogz4fq6r7vfr@annexia.org> --4cBmhtN80KceTM4eDLGcNFwVLBuhtUrTY Content-Type: text/plain; charset=utf-8 Content-Language: de-AT Content-Transfer-Encoding: quoted-printable I always found let [item1; item2] as all_items =3D ["hello"; "world" ] readable but the compiler does does not infer that this match always work= s and emits: Warning 8: this pattern-matching is not exhaustive. Here is an example of a case that is not matched: (_::_::_::_|_::[]|[]) I've never touched the compiler so I don't have an idea how much effort i= t would be to make the inference. cheers, Martin On 8/9/19 4:27 PM, Richard W.M. Jones wrote: > Let's imagine you have a list of named things, but you also want to > collect them up into a single list. For example: >=20 > let item1 =3D "hello" > let item2 =3D "world" > let all_items =3D [ item1; item2 ] >=20 > let () =3D > printf "item1 =3D %s\n" item1; > printf "all_items =3D %s\n" (String.concat ", " all_items) >=20 > This is fine, but there's a danger that a programmer could add item3 > but forget to add it to the "all_items" list. (In the real world > problem to which this applies, my items are complex and lengthy > structures, and the "all-things-list" is well off the bottom of the > page when you're viewing the top item). >=20 > My idea to fix this was to write: >=20 > let all_items =3D [ > ("hello" as item1); > ("world" as item2); > ] >=20 > Actually I was slightly surprised to find this doesn't compile. I > guess because "as" can only be used like this in patterns, not > expressions. Also the scoping is wrong because the "as item1" if it > worked probably wouldn't apply outside the list. >=20 > I haven't worked out if it's possible to write this in ordinary OCaml, > although I suppose ppx could solve it. Any ideas if this is possible? >=20 > Rich. >=20 --4cBmhtN80KceTM4eDLGcNFwVLBuhtUrTY-- --eYNj7NUdiv6hOf5vGSENXO4ZOO6wvtyes Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE4M4+GpPuXxOlGys0A21e4obhb74FAl1Nh8IACgkQA21e4obh b779sw/9HEk1qfXSWPmq55V80BEnv45F0SZ8xyfRBJHGJhG8+D4wQ1HYrB7wO4Cx 1KtfdG253jjvT0RJn4+e4J1KiLDCLaUBnoK//F0EA0v7rvDxVlNtFpU+Ur0MY1xN fFUDLC3Kv05nGaLUoJAxGYMSbZgayLe59hgqMG0oLqDBYpIwXR0da9hKpna044jy ebsPW0oiBE8S1pTS2WqmxD2qbIoopkedKrNnJk1Bag00zd2RLyJkog4dyBqtgzbh pSGBbBnDL/M294ncfrN9WsoXaWsiZUIAHxOqVla8S7hbDxo4gADyY77uz5QDbd7F bI72A8LKgbajmHHaNGUnBUAXjY5nt8/7sssnEi7CNt8p6XRCXYpmg8E0j+TzSDvn +CG44DRE3BqpEXM5fubP3NWeBGL7R3/wwz/sBcz6QuBsReGEGD8+oo6Zxxk1Bpe5 d8xZsqyKk7ChZQXZE3R4EmZWvfWBY1D/9/nWAWEwq6JrKxyYv1qKRuiMLP3NDFk1 QGu68tXAChZjpYIlgcVx6kZRGJjbDw0yPVhLtl+bHNoX3GJvwCOmDRcxieH2lblV JxWPPvrf4XcZy64HDJbVGysT00ZBEpEGnk1cY5bTzjROeoJ2FcPw2KeT/Ba6y/RL GfZm/irmkD1UNJhzGxkmVCGHZRr8vY/No+BtW6vgekHk+8VLDrs= =f0wp -----END PGP SIGNATURE----- --eYNj7NUdiv6hOf5vGSENXO4ZOO6wvtyes--