Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:128553 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id 603151A00BC for ; Mon, 25 Aug 2025 16:32:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1756139431; bh=dYm2ZI+KHwrKJeDgGHXX2FDbzo2bVfzQEa+TncbT4ag=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SzYKYijuA8HCFhLBHUW3EskDve68yMlE+M6TOkIUOzkwlzL0m+TdlCqRqiV2PJidw nLKLsjsQxxKxqJKouLIkNxWYuAOx4TxB1Im9J9xBfqZxl0koXuo5ypULtkMC7WaYL4 vHwhZkpHAgUFP1WQNfy6LZkDpu1q9z+dXygztny5SZGILlKWoP6tu9Q4ivmXIPLiWE YbYjn8i4iSCv8rC4ho1BBHWdf8IwGuWbLiY1uZ4w3w0Z3L+iMDvQubM9FHwSBPNOaY RZVGKVyTZ5QI48Zmza6LpLuiQE9/n0746a30IEyeQXNZ8tg6NnjZtrHEshjYofyvQB aWN7JjE1fxqJQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 696E418007D for ; Mon, 25 Aug 2025 16:30:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from sonic304-22.consmr.mail.ir2.yahoo.com (sonic304-22.consmr.mail.ir2.yahoo.com [77.238.179.147]) (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 php-smtp4.php.net (Postfix) with ESMTPS for ; Mon, 25 Aug 2025 16:30:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1756139519; bh=cWUrBPuVVSo5UFCsgVDyB5QcQ153jwx/u3FXcOjeXB4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=QqGYC5EembyIx+Y7VhYrZSeCoololVdo8Mqo6gfANSvM3vuot4G+paR6iWQ5U9DJtd+VXCh88DnbYMWD8pWRXcC4x/5oXhcWEwqEVrgMoJA0/HPiwzuC9Hhji/h7G6f4g8c7RiBwvGhhXaVRFv2Oq/KoIslQwkxuLvYWq4g+2PNgQbj2DVH0zay/iXQoOPwW/89EdOVVuNLkDuNzG6XycP7G/5Nahf9AVwYT0h0p7p1IJojtxf5jzQIiK7ch2IpAKxUOHSxOD5zUnHyhr3cQlNbI/Vxg/mzQLsK2ZhI5/IN7Lb/FbW/iTvsHQAKDspGO/MQ0JSjBb0LAeORBc8ZrjA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1756139519; bh=eJZn8Dm1YbZIlEdhaXbF2egvUZk8g9JONVeyPV71nBn=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=VYD8BITIinG2BozjG1t18Fr7w13gbsrNxjNZE6VmD79BcRWpeR4luVYwcDLoWAAdGYfl/zBfc3SRKtLCUogI6I8alMW7BjbNyLUzRgk6XEBGnhD3IgZYjpQQiZM4jsWBzMaTQfyEmbbWu3/Mzak/jRnMniqW7zwYQ8t9S4HeZ8/UTOX27eTZQdUIdjU7ZLGjgjlaXEFEl8EeZCkG5jPnx5qIORaZTRb1Cs1CoTBlyS4q604SALhRwlN3pVvLMOBxvUfuSj4WpHMf3Z3nV8cIpd+iXpUAoOPQOZdOnPk9+l+rQIAKa9h2A+DNRamzVNu/UwHs4KGsx37cJX3lAjCGZA== X-YMail-OSG: qW29g.oVM1nIU0HgeUfjWbYYjCTkqFJpdu_0RNiwDY0Vk.S2ze2eFw9v5VmubP0 PK7iJHeQ4F_genqQSmCydQt6jGNY1ENkrdiOlhtoU7twWlxTFGDS2SAuXCrgvGfcqo9pNz9P0lnj XNinmeu8H_tV9lGKyDlEfpQZOZSBhHcyL4lbsNQomaQ_pWVwsJZGbxPmd2X0fcIfxyjw0ChSHylG DiKpFhp_HiTQvkeHiy5dTlr7HuEVhwLfSaI9JzLp5IPJjhMGJGyVOXL37_xAmyKqB248fNIcGBTp PmKYJ7pXCjNad7qh6ZXCQI38L4co.Tpg6voTBiqfr09PInP07JYufaqkgjz7qSxcGVJNPD7HUwft bTZvBUY2MM_Pboe9jR0emtnXd1bOu5JINOPkuFFJ.daWvY9hmUn8xIKJUAud_ZqqZwJoLQESz1mF RBoHdp9piJ8hWjPVgLvCzVrvQwIeoL2vVRibhK5.2zDaMFw6E45jm6b3JqTKGatOSVJi5Gey9aYk _3vFLsE3LDW3DnmmDYlu99_GSyA.mgQskk3TncfJYiHf3gm4s.Ru2x1HEvLPIuPm9PVi90grB8.1 GtT.p3pAMjBHyCZK7FyiP8BY.7ZFG0uhjLMAmPVq.MMO2l4Go.15iRfoyMaNN2DX8AftOF2mETF8 43NROQI8mnqTtSNlP2OQpeEjpMcQ2X.Cm47QRL68FnUmcmrR.XI2HY54uz.0hbXXYn3qZBMLRwng iD1zyNTc01nGWWtSTJQLBA4Z9nLMbdsEk4dh9lrwYHuHWBQmYQCFSvn_L5GcMxLzFxNncDWPNNEM cyFotHP7NUFJwJpWN7Utfllq8FwOHdomi0y27nmUIeJm_0IGAdChPb30jRfzvD2m7gfOqxMseirJ cM3xZtY3yVFTWfgHrNDSYv0iyHPFkTVSbQsXZmAhCBfk7a5lyrbk2f2aRtUieUTH_XD27zOYOMKB DdhPP.oKVG1HabQFE5vVgJLuQ6pbrsfleU5vSoMK6PIKl4c2MSkqUna4XeWXfkMmkcuxP0nlfWAd oOEfj0kRAIfcc2O3pt3ARQ5KprCawl6oxdO0CLpJhSU6yMbpJszntEMXFc5VmhYY0CdZiVcucC1E XIXlIGqzBg2VgtS5yqTxz0nV51UVk1iR9CLmHui9CHv4OU6huUQhp7NwL6LhcpMVfb7phsn6PDNy 4ElTVemb4Nf1zwlddbl.gQfdG2XdRHVC5aaDblsNm77GczWCjpvOWl.uIDP8ycHRTouD9Iqa0fG1 U8XILrrMJrno.gzaLiIMJwMSuosstm7p5ENeXcBT8UlJ0mFdggiA0nP85QSzyOs.W1y_wL_8LzPs FZTM561H2rD6SB26E0qJIivSqzcj0VKltCiiTlg_d.BDwjT8t85LPl2q.vUv.5gaYhf6ZeFl8jI6 Ld1XvzwzzQrMG0fOhvPzn95O6XWPvAboqITdqUFSm2UQtNLuXAJ14bpmjscn1sIWu0DtJTLDG2MJ cxcDBgdGGL3g1iHmOIdXraupezdvDYJWxRvvFxs9rtnG_1CbuzWj8D.I8ah6BB.MsT3jXq5sMSFJ bCslj3sqEia20JYqnEvchVadycw94SipXcrM5bRmaB4Xxen6zZGEMAI2cVsj0Lzjma00xFX6FzmC KSpsRIcce8y7k_0nW2NvxI4Ai28QP19xmkc58dMnXMi8UUg3pLvRicSDP9gHzBe2O5YCYlGHYfAe dbopELKFCkR2TCbW6OkkYfc9bpybezDvGagc3TouEUYlFu1R4FsTqQLWXcEYTtq9fo1yAZ4eVKIg Q4LLGkRbko0Ou8FxwlRLwDwU.FGZR6PQP2rG6581Ln_dPgl5qyqVwZVrzcHRbowPnTYrsxds883. hQQ7WhO909rOpQy2BiYnTHvwpeVmqTVzid55V2s0gj3K_CQFeTrakZnRyO7yqMKtKqkeosXBbyJu my7i0JBOLMyXEPhngG24f3I6qEUvOQCkS96ge4WPsREEfCbi6CkrskFxINP1rPyPI3AFX.mKuiZC Pm57xAayWpovbLiu1c9ZqAeb8tqbcsuMYCe8czNXDlYqhejBIvH8sx6kf5pNyMSFMcS4IWeweqE1 O__qYl31eBe6kLh1Xa4EEPtiWzmys90sEYaWRmdkcjdHxJMOYILsYZ.gPLwMXwg7Dck.TR7qYm1q qVJJS2KKsav5Y73Xz5nqrJmepBuGFsAtW24Hs.Wp09oIGBDk6mfKOYyaRtOnIXzaEAy6mq0tSbyW WcPUze2GMHNX94ZZa1F1W1mD4JywVJ7I2Ohq6.IaKE8_DbHO5rWV5csFtF_nui1g- X-Sonic-MF: X-Sonic-ID: 313a7801-326c-4fae-942c-d607dfefb2e2 Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.ir2.yahoo.com with HTTP; Mon, 25 Aug 2025 16:31:59 +0000 Received: by hermes--production-ir2-7d8c9489f-w84wk (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID c1b73772a98f07ed3d08d72dbaafdc14; Mon, 25 Aug 2025 16:31:57 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Message-ID: <1756139234402.3228698536.3461950202@yahoo.de> To: internals@lists.php.net Cc: rob@bottled.codes Subject: Re: [PHP-DEV] Pipe precedence challenges Date: Mon, 25 Aug 2025 16:31:57 +0000 In-Reply-To: References: X-Mailer: Vivaldi Mail User-Agent: Vivaldi Mail/7.5.3735.64 Content-Transfer-Encoding: quoted-printable Precedence: list list-help: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 From: hanskrentel@yahoo.de (Hans Krentel) On Friday 22 August 2025 11:40:46 (+02:00), Rob Landers wrote: > I think the point Hans was making is that the fn($x) becomes implicit > so you don't even need it, so your example would be something like > this in this case: > > $input |> fn($x) =3D> |> array_map(strtoupper(...), $x) |> array_filter > ($x, fn($v) =3D> $v !=3D 'O'); Hi Rob, thanks for jumping in and thinking about this! I really appreciate it. You've correctly grasped the goal: reducing the `fn($x) =3D>` boilerplate. However, the syntax I had in mind is a bit different and is designed specifically to avoid the parsing ambiguity altogether by making the structure unambiguous. The proposal is for a self-contained "canned pipe" where the `fn($x) =3D>` applies to the entire subsequent pipeline, like this: // 'Canned pipe' creating a reusable function $processor =3D fn($x) =3D> |> array_map(strtoupper(...), $x) |> array_filter($x, fn($v) =3D> $v !=3D 'O'); =20 // This $processor can then be used anywhere, including in a pipe: $result =3D $input |> $processor; The key difference is that the `|>` lines are not *inside* the closure's expression body. Instead, they *are* the body, in a dedicated gram- matical form. This is why it avoids the greedy parsing issue=E2=80=94the = parser would see `fn($x) =3D> |>` as a single unit defining a pipeline, not a closure that contains pipe expressions. Your example mixes the outer pipe `$input |>` with the inner pipe=20 `|> array_map(...)`, which is a really interesting idea for a more advanced integration! However, that likely reintroduces the very pre- cedence conflict we're trying to solve, as the parser would have to un- tangle which `|>` belongs to which level. By keeping the proposal focused on this self-contained form, we get a clean win for the "pipes-in-closure" case without adding new complexity to the grammar for parsing nested pipes. It's very much inspired by how Haskell's `do` notation provides a clean syntax for a sequence of actions within a context. Thanks again for the feedback=E2=80=94it helped me clarify the concept! Best, Hans