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=NxuKjz6C; dkim=pass (2048-bit key; unprotected) header.d=okmij.org header.i=@okmij.org header.a=rsa-sha256 header.s=pair-202411190653 header.b=opsnZNwx; 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]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id A9ED140068 for ; Thu, 24 Apr 2025 04:34:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:cc:message-id:mime-version:in-reply-to: subject:reply-to:sender:list-id:list-help:list-subscribe: list-unsubscribe:list-post:list-owner:list-archive; bh=tfFFx7y4z5pOnW80OgIqO//vlGYhW1p5dZ294VToQJk=; b=NxuKjz6CTHw1UXq/5TuMcpyYeouDf5Qtsp0brfEmfj0EvCKzFncMkIb6 g0yWVReQhQTS5w4Ganx0U5mozGygTOBwwyJX8jSpKEAsdFD50tEidN178 4KsqP12TBTGf0WQP3KagS+9gG6rwUq/aPH5JpsXndfzj0+ccYXMTGYwbS 8=; 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=@okmij.org X-IronPort-AV: E=Sophos;i="6.15,233,1739833200"; d="scan'208";a="219189720" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 24 Apr 2025 06:34:39 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 01A22E0D1D; Thu, 24 Apr 2025 06:34:38 +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 6F741E007A for ; Thu, 24 Apr 2025 06:34:35 +0200 (CEST) IronPort-SDR: 6809bf5a_8c3xWkbagc34XpFVgk5KTLaZEH1eh23kgBNbXTRB8ggVJuY Y0EmgpS9jHwKNnNVKeqEqlxaHois1yrRjH+5TFw== X-IPAS-Result: =?us-ascii?q?A0FsAACrvglog3IDJ0JaHQEBAQEJARIBBQUBQIFCBQELA?= =?us-ascii?q?YJDfVozBwhIYYdDhSyIdgOgEQ8BAwENMRECBAEBAwEDhQACiy4CHwYBBDMGD?= =?us-ascii?q?gECBAEBAQEDAgMBAQEBAQEQAQEFAQEBAgEBAgQGAQIQAQEBAUBJhXsNgmIBM?= =?us-ascii?q?4IWLDBbAQEBAgEnEwYBATcBBBZWRoMbAYJBIwIBsxKBATOBAYIMAQEGgQjcf?= =?us-ascii?q?QmBSQGFbIJjAYlpeicODYFIRYIeggkYPoFQg0CFd4IxgReeS1J7HANZLAFVE?= =?us-ascii?q?xcLBwVhRUMDgQ8jSwUwHYJXhSWCEYFcAwMjgiRvdBwNAoRZhFItT4MvggNoF?= =?us-ascii?q?R1AAwttPTcUG5cYgzmBKBocXURnViyidYIdoE88hCWBcIIQiBmVSjOFWoFKo?= =?us-ascii?q?zOYfqk1gX0kgVxNMAg7gmcJRgMZD44hGYgGdL5INDU8AgcLAQEDCYVFileBS?= =?us-ascii?q?wEB?= IronPort-PHdr: A9a23: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 M76qd1rolPglfOAmGIPbQ== IronPort-Data: A9a23:92Xu1K61KttujPMRAkAlrwxRtObDchMFZxGqfqrLsTDasY5as4F+v mAbDzqPaKvYZDHyKNx2boSyoRgAvJ6Dy4NmHQBvqSkyZn8b8sCt6faxfh6hZXvKRiHgZBs6t JtGMoGowOQcFCK0SsKFa+C5xZVE/fjUAOC6UoYoAwgpLSd8UiAtlBl/rOAwh49skLCRDhiE0 T/Ii5S31GSNhXgtbwr414rZ8Eky5Kio42tC1rADTakjUGH2xyF94K03fvnZw0vQGuF8AuO8T uDf+7C1lkuxE8AFV7tJOp6iGqE7aua60Tqm0hK6aID+6vR2nRHe545gXBYqhei7vB3S9zx54 I0lWZVd0m7FNIWU8AgWe0Ew/y2TocSqUVIISJSymZX78qHIT5fj69IwJWExEKoKw9ZqH11x0 dE6DG8zPynW0opawJrjIgVtrsEqLc2yeoxE/GlpzCufBvEjKXzBa/uUo4QJmmx235kSdRrdT 5JxhT5HaxDNbDVIOVIWCtQ5hujAanzXKWQJ8QLE+vJri4TV5BF+k6PtKYaJRoCxBvtnhh24q FLh1k2sV3n2M/TDlWHUqi7EavX0tSjyXYZXELyj6tZxkViLzyoSDgcXXB21u5GRhFa5R85eJ lY86Csrp7I7sk2tVNj0GROiyENopTYZUttUSqs1s0eVw6vOpQ2eAwDoUwKtdvQB6uYWQhENx Ga5gs3VOhhCkpnKdyOko+L8QSyJBQAZKmoLZCkhRAQD4sX+rIxbsv4pZos+eEJSpoCocQwc0 wy3QD4Ca6L/ZPPnOo2+9FHD2nSj/d7RRw8voA7QWwpJDz+Vhqb7OuRECnCCsp6sybp1qHHa7 RDofODCtIgz4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJv20jeBwya5lfJWS3C KM2he+3zMINVJdNRfIpC79d9+x2lfa5fTgYfqmJP4USPvCdiifaoH80DaJv44wduBRwyvBnZ f93gO60BHcAQaJq0CWxXeQGuYLHNQhgrV4/savTlkz9uZLHPS79YelfbDOmMLtjhIva+1q9z jqqH5DTo/mpeLakOnGPmWPSRHhWRUUG6Wfe8JwML7DTfVc9RwnMyZb5mNscRmCspIwN/s+gw 513chYwJIPX1COZezaZIGtucq3uVptZpHc2d35kd1Wx1nRpJc7l4K4DftFlNfMq5c5y/85SF vMlQsSnBugQazLl/z9GU4LxgrY/fzuWhCWPHRGfXh4BQ7BaSTfkxPrYbyr01SxXDiOIpco0+ LKh8QXAQKs8fQdpDeeISff2z1qOomg5nelge03iItBjWVjdqtl2Ci3uj80YJ9MHBgXDywC7i SeXI0Y8jsvcr7Al9OLmgfi/kL6oNO9lDG92JnL+74vqBRLF/2Gm/5BMYNyIcR/ZSmnw3qeoP sdR8N3RL9wFmwxsn7dnMrM205872cTjl4VawitgAn/PSVahUZFkA3ue2Phwpr9//aBYtSS2S 3Cw1IFjY5vRA/zcEXkVOAYBRcaA36tNmjDtsNIEEH+j7ypzpLe6QUFeOieXsxNkLZx3DZgEx Nkws8tH+i29jRsXauy9tB52zFjVDHI8UPQAjKo4UavLkQsgz29QbaPMUhHW5I69UPQSE00ID ALNuo/8qeVy+k7wfUA3N0Dx5stGpJFXuBl13F4IfFuIvdzeh84I5h5a8BVpbwEE1B941/tXP zl6BVxUPoSLxS9j3+JYblCvGiZAJRyXwVPwwF03j1/kT1Gke2jODW8lM8OPwRwpyH1ddT1l4 72o8mbpfjL0dsXX3CFpe0pah9H8bN52rCvupduGGpmbIpwEfjbVuK+iSm4WoR/BA8lqpknmp /Fvzdlge5/AKi8cjK0qOba0jY1KZki/G1VDZvV98IciP2LWImiy0AfTDXGBQJpGIviS/HKoD 8BrGNl0aC2/8ySztREeO78HJu5lvfwu5edaQIjRG0w9j+K9oAZq4bXqzQqvoE8wQt5rr9QxF ZOJSRKGDV6rpCV1n03jkZB6H1SWMPg+Si/y5uSXyNkyNokitbhseH4i07HvsHSyNhBmzi2uv wjCRvH3yr14w7tohq/pQ7RxFiSvCNbJTO/T2huCg9dPStLuMMn1qAIerGf8DTlWJbc8X9dWl 6yHldzKgHP+o7c9Vl7Gl6m7F6Vm4du4WMxVOJnVKEZ2sDSjWsi2xTc+4EG9dIJ0le1C6vmdR weXbNW6cfgXUYx/wFxXcy1vLAYPOZ/ob6vPpTKPkNrUM0IziTf4FdKA8WPlSUp5dSVSYp33N VLSisaUv9tdqNxBOQ8AC/RYGKRHGV7EW5Y9VtjPpDKdX3iJgFSDh+PYriAeywr3U1uKLMWrx qj+ZEnOREzn8uWAhtRUqJd7sRArHW5wy7t4NF4U/9ltzSu2FigaJOAaKo8LEYxQjje07pzje TXRdyE3PE0Rh9ifncnUu7wPnztzB9Di/v/8Lz0tpgWbMGGuDYKaRrBm80+MJl9oLyD7wrjPx c42oxXN0tqZm/mFhtr/ItS8guJmxLXd3H1gFYXVjZnpGxhHaVkV/CUJIeeOPBAr1+nKl0DKJ y4yX28srIRXj6LuOZ4IRkO50y31cN8iI/vEoMtPLBviV12n8dB9 IronPort-HdrOrdr: A9a23:zM1qyaNNBjMKLsBcTvejsMiBIKoaSvp037Dk7S5MoDhuA6ilfq GV7ZEmPHrP+VAssR4b9OxoVJPtfZqYz+8T3WBzB8bBYCDDsGusaK5l6I7l3SH4XxD5n9Qttp uIEZIfNDSYNzET5qzHCWKDcurIruPpzEjF6N2utktQcQ== X-Talos-CUID: 9a23:MwbrLmH4kFFXYycrqmJAqmc0He0CYETt0WnsHGuVK0I2duysHAo= X-Talos-MUID: 9a23://BCTQS9t83/9B8uRXTxi3J5NN40v5jyMwMzo41dm8e0EgVZbmI= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.15,233,1739833200"; d="scan'208";a="219189704" X-MGA-submission: =?us-ascii?q?MDEeHGV9i5QcEG3F23z4rBPXxXW3HOSF0nBQvs?= =?us-ascii?q?CptcZdnSI/SZcMlOP4u8dH42DIV5xloY+KNjoSoaxmdyVUeUpmg1t9fb?= =?us-ascii?q?u80eMv0xZqPd7KgvUH0sgWkhXFrZ7wqsxjmbca8sBbVOzHB2VZEa2dv8?= =?us-ascii?q?A0K7op59Rf9XShwF35wsDv2w=3D=3D?= Received: from mail1.g3.pair.com ([66.39.3.114]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2025 06:34:33 +0200 Received: from mail1.g3.pair.com (localhost [127.0.0.1]) by mail1.g3.pair.com (Postfix) with ESMTP id 1144D3FCACD; Thu, 24 Apr 2025 00:34:31 -0400 (EDT) Received: from Magus.localnet (151.152.159.133.rev.vmobile.jp [133.159.152.151]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail1.g3.pair.com (Postfix) with ESMTPSA id 7D8A4582C32; Thu, 24 Apr 2025 00:34:29 -0400 (EDT) Date: Thu, 24 Apr 2025 13:33:45 +0900 From: Oleg To: francois.pottier@inria.fr Cc: Kenichi Asai , caml-list@inria.fr Message-ID: Mail-Followup-To: Oleg , francois.pottier@inria.fr, Kenichi Asai , caml-list@inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okmij.org; h=date:from:to:cc:subject:message-id:mime-version:content-type:in-reply-to; s=pair-202411190653; bh=tfFFx7y4z5pOnW80OgIqO//vlGYhW1p5dZ294VToQJk=; b=opsnZNwxdZkgjTnYzZslGl9TzX06OQKMfDOZgfjDh+nWM9pmojl3UsFY2U3VKBONibFC6Rm8AloI7uzjZhqP6xu+4dS3+qDQ0C6MxUtvl8Uwn+sGqxj9cCr6gRjfwR2zXsjF5hw8BHYXWbXFBZVXhP9uf9PkchO7pkg61whzO1roWqJdxNf5iR3lmJaL1VsRHyKAwUtRLEoAgIlCdwYZRcOlcwCA2npT0fGPFTTiDDAPn7eMqpGfpunLkMe1Geu6pdL1HtxRsY++EvrWmwvp73PIF/+w8JwqfS6e7XnM5rByJjseuQynPzoOIgmYobezTOTZN4Am8JRO7fSm7qJHYg== X-Scanned-By: mailmunge 3.11 on 66.39.3.114 Subject: Re: [Caml-list] automatically resolving open? Reply-To: Oleg X-Loop: caml-list@inria.fr X-Sequence: 19306 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: First of all, to some small degree, such tool already exists: MetaOCaml > open List > let test = map (fun x -> x + 1) [1; 2; 3] > > I want to obtain: > > let test = List.map (fun x -> x + 1) [1; 2; 3] open List;; . x + 1) [1; 2; 3]>.;; - : int list code = .< Stdlib.List.map (fun x_1 -> x_1 + 1) (Stdlib.List.(::) (1, (Stdlib.List.(::) (2, (Stdlib.List.(::) (3, Stdlib.List.[]))))))>. Everything is fully qualified: perhaps even more than expected. MetaOCaml has functions to write the code to the file (without the enclosing brackets). The obvious and major limitation is that MetaOCaml brackets may only contain expressions (rather than structures). Furtherfore, local modules etc. in those expressions are not allowed (since it opens a huge can of worms for an uncertain benefit: I'm not aware of any compelling example for allowing local modules in brackets, which cannot be simply worked around in traditional ways.) > As far as I know there is currently no syntax for absolute > paths in OCaml (every path is relative, and every name can > be shadowed). Maybe we should consider adding such a syntax? Actually, there is a hack for it in OCaml (OCaml source itself says it's a hack.) See typing/typeclass.ml in OCaml repo and search for "*predef*". It comes in the context of default arguments, which are re-written during type checking into code using Some x and None. Those Some and None must be the pre-defined ones, rather than locally re-defined. Thus the re-writing machinery produces *predef*.Some and *predef*.None. The typing/env.ml and typing/persistent_env.ml has code to deal with *predef*. Specifically, env.ml when asked to locale *predef*.l looks up `l' in the initial environment. It might be good to right this hack. The reason I care about it is that naively pretty-printing Parsetree (converted from a Typedtree) may produce identifiers like *predef*.None, which are not syntactically valid. Therefore, I have to hack the pretty-printer to ensure that the output is at least parseable, always. Incidentally, the same typeclass.ml code also generates variable names like *sth* and *opt* (I think typecore.ml has something similar). Now that we have Ident.create_local, there is no need for such strange names.