Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:128520 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 C61F71A00BC for ; Thu, 21 Aug 2025 09:08:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1755767188; bh=IhWMtlitXHa0wUqFwNj7esHen3lWvTPYO3wP1dMSKd0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dDKIOODLJ91gpyR+Cb11czyzQkoVBlBBvNmpHminF6OmO94fvb23L1btlgzCRV/RW y7tFS1tU6VgkspFgNkkLa9IqKwCqigv9yrYYbv1+7QLI8vDWA2jUSKuBc2Oo8hMKQw LqhT9LfIAwnZjXA7pbH4s5tSM8uym7iljlVZ+R0pN2y4d3YLRkGxdbqP2bU8v7O0rK PNyMCE8yeSWAQHOWr6h7NxN1yHkeaJvlQ+HupwJgtUQelg+uMOqEHzhRDH38uf4cvv AulfjAhgB96Lo4+9uicJUg3yrBO3tBayItXmJO2didcREfwgzEV/vdDb3pFpqzKpvt 1R+WbUW6mQEwA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 4B63E180088 for ; Thu, 21 Aug 2025 09:06:27 +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.2 required=5.0 tests=BAYES_40,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 sonic301-21.consmr.mail.ir2.yahoo.com (sonic301-21.consmr.mail.ir2.yahoo.com [77.238.176.98]) (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 ; Thu, 21 Aug 2025 09:06:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1755767277; bh=X41G0+lsXBo+cIVnYgFQXzaBz2QJCIYUu4u+sS/TiO8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=doV5WRpyUqqLiOX4ZD5gpearTyozuBdiz//u1lrqZaWTw6a/cprlWuxvxvNGKV2F8eaYl4NAZwZyVYnH77l/hRxO+ITqArCDvRH84XgAMJAQN+DpKxetPFm1AbSaB3cBAqMUFZDJPeTYlPoNYndjBIEkdyjQS1rZlPM+11OltdhRKFfOiCZu/G3KavriqYXNCRdebPQZW5L/WfE4GGvdlA3FsrO/pO7WXDIeQFi2w1F7T1oVo/TfeeCmJglFUi54K13d4HzOrB6Vms4UTSazqdsj6P9nKVWKPiHqxMmFh/cQdlwgC2cqwwHuFGz7GRIDRIo8DYQwMRlpPFHhaWxC5Q== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1755767277; bh=Eb7TFsXQboyraZcEgAI2zuxo6d4sSRG/K5yNW/I7jD0=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=PGBRXzEDtsB6fbpyMoD147DuE4ROjj8yT5oHdWgSvkqALCWxe2p3qZmBMiaUiow+eX6Mk7Yl6ls3OfwsESbzORGCz6C0QLTzm1IIanZSfJglNQio62w4ZtdQLUISXdQSqCs9Sf2jGMSOG+i++cpRwh327XTS/9jHwuuJElGnh0nmfg20klNJUjqTXkTtehUdp7J0zWy2zU8yqSEHpAMoOfFVfhC85a/F3N8RRa5if9I+SVVNE00fBLoFQigmDKK2pLHwbHdynidc0FwZ4st8eDNGekoMeQxdEE6Hxwf/kdIWUbhcWB2FmALwafcJ6vVG+WbAkhTFD6rnW4e3disv8A== X-YMail-OSG: AV0FI0EVM1mJ_J80uOusNYc70J_m0lOEYZLW4dpi2Ug.9spD2wkyPYQFzXZyffs zdsB0zdMI7yu_f36jNDQ0ICLO_2288UBGmSaG.3wLHGRgb_ZOWAN.yPx036YOORt4k4LCE10_hmg j79wYPYQHhi8LfnLaMp.u7VBNs4mlc0qoTnkB3bQDUwQzJmELAds7SPQQ8vD1xG4I2Lujrbbkef9 5TadE_iit5pZkF0FMrMPUvaEUicJPsWGJ1tybezCpoWqC.AiMG6PEy4XvPP3AYqJzMOWBjSTx.9G vvGK3yWZH41XbYlRRkDmZLFEdn6NO4ST4_m_W2FnJxI14cyGKftJR9RBPFzS4CHPsNNV76EOeKKe pz8YxmEZC_45GE910b3dL9I_J0p4hVHjfG1DTK0EqlktjXqn7dKdBwWDH9guoB1shf8Q7VPhffwu I3LQijAVfJIee.s1igZOXugEBdAihNyIXEejDambJohZW9RCYPZ6DTTywVewrEHrHRYD7pdoBpiR FEPe.EqBK.Z0H341Gu5idSK2pxEioCT68gnH5z3k4D1VHFCNoKzvhR3eGWKLu_Jm1oawAEX7RuSb ADz39aGTB94sCDapvY77VTeD53M.8b6tNON4V_c2oD74MjKgQRVDJXHeb5Y_6S5RSxb0HyJLnJKv ZtM1pggmM8dqTcCfnMLrL9PWNasBBKu4hd2iSznHGzZp7YoJ2PGLg.uR5YyzI36M.KrZ555R3g2L DWigtkTbW2sBclXDxDo875U1W2dj8fXpZC1DtiUrx52o9DHD4F69V1bzsFwlB4WPVdbX2C_R9n3P Pc1HI4J88KKAXOwzD7tllhmyGfpPTe11QMNGElaC7wovWcP89rS34GvnPkHjv6kB36EAo26QE3CQ 5Uz1vBz8UeIIC.82Rt7lBnV0aBDIDaSk0gvIhsYzXsZGaX0Yc9CIWc7JdO8g82y7k1k73zirG8Tr uGUJoBD5AHKP_5P16QmWbJJ9WvKkuDAym86V5ZcahN9gfqIbx7kalpIjgQFjLQxQ5yOoE0PykTpw wWpLaJcqeqicxAXblY9yhK8lVow91T8zlhHYEM5AM9JuCSorHNI67VWgs_5NX4FWoHGHvPr9hubc VLn2QF_GK0lsUrd2dJJw9MZSNBYmENOXWOSFNrI3_IHpRpSJ5EaDWqLM7FsOHRu0N1xe4Iqb8H5E tvzxf7ZoOw.mliAFEjebmgrLSi.g3BqjEtinpC4gCzO76D1Vg1FUIIh4s13YIPYV5Y.TAVS0KmaD oE.zqwU8pMrthEmwZicfWazVU9_bFkimrpQzOED8TSRPo..gmgP8lNycPk221M5NuczdqerxR85O a9IY0aggvHCguZEB7sdzzY.0L1xtpxL0O2unA_7yqOAH4jyYQ8B3vPsRU6dqvhp6uK_tEvlh21am AKm_yPCQ0oQnehyI8xEbLkuNVygfChthUXXzN47wMQPEDlJkx1pksnAQGeqW7d3UTUx10h7s8p0h rqoKhUfZ1cq7lrF5hUasrwk7HAf2g9zlmI2P8q3.efxYQzmoq1rTeqJnXKEldy4kV4MCvSvUvsop _wfgKcVyaS7Ko3VisgcCknCKOSh8646rbtVhC2a90IshK67rpPeFGbEbfPYu73Z3j2PwZhGly_Z0 jhL3yurdRfAkLlNy3E9ML04tL4hoUQQ7qQ2lgsuLLXOg0uysby4j3Rn245kqHMMdHQv5fzBur7IM nbV__ei6jNls4wgRaxPfJdVgQje1bu1mU5COTJGwLQuFaGcATo8UVkgmyRzVwack97M90jN0uF.R Y3ZDXEbT4k9o6EjXW.E9iaJmJTkxT1hxLwNdsabKRKzSOFPPk1pS_.9Ks2Zq9pMucK_OGiiCSkqV h3W08Z3WzIOD3WUmgD7tL_ox6U2h1gPt3ERIHiVsn5WfSyTIXBM9m0E6EYj.4ZauTxVyBz3UjY8T vVMfelW0tLl_aYYwzEJkCzmA16EP0_xEHVztmFHAfaSe1eahGnhxEdTkWJMkoghudvkMiR5mw2fV PIlyfD3CsJR3khSp4.Zzq8dsFqgEYchh0DTlVY02yQEcYkyYtFIaXkXCDDFJEcsj4mvLnJ8Z1Lmr i2hCOXnMlocDYFokfYqHdrubMYUSdjA9RQUrOVRhleJUJ2Er.WWr_0BbW2kEFleFqdOdiHNp8x.O jNsUKPRN1f7eLp9sI6eEoP3JdHuyn7w8EkRT5Ep9L4V_bhNhWtn4.q8ZeUJLSheZZByHdV9370uY 5MvkGYpi8ZHJXiolyYK8.GSrUbyb9xPAxBGOgAZ.FluGxxRE0NjSjfkzQm1FlejtwN8c- X-Sonic-MF: X-Sonic-ID: 08e1d871-26af-414f-a9ed-af75eccde859 Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.ir2.yahoo.com with HTTP; Thu, 21 Aug 2025 09:07:57 +0000 Received: by hermes--production-ir2-858bd4ff7b-rjtcv (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID eb5320612652aa0f1f48d501d1d83c23; Thu, 21 Aug 2025 09:07:56 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Message-ID: <1755766483699.1651677569.3151523711@yahoo.de> To: php internals Cc: larry@garfieldtech.com Subject: Re: [PHP-DEV] Pipe precedence challenges Date: Thu, 21 Aug 2025 09:07:55 +0000 In-Reply-To: References: X-Mailer: Vivaldi Mail User-Agent: Vivaldi Mail/7.5.3735.62 Content-Transfer-Encoding: 7bit Precedence: list list-help: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 From: hanskrentel@yahoo.de (Hans Krentel) On Thursday 14 August 2025 21:30:08 (+02:00), Larry Garfield wrote: > Does anyone have a better solution to suggest? I've been following the discussion on the pipe/short-closure precedence issue, and while the parentheses-based solution works, it does lead to syntactic noise that undermines the readability benefits of pipes. I'd like to suggest an alternative that turns this problem into an opportunity for a more elegant syntax. Inspired by prior art like Haskell's `do` notation, I propose what I call "short closure canned pipes." The idea is to leverage the greedy nature of short closures to define a clean, linear pipe chain within a closure context. Instead of fighting the precedence, we embrace it to create a new form: Current problematic example (even with parentheses): ---------------------------------------------------- fn($x) => ($x |> (fn($x) => array_map(strtoupper(...), $x)) |> (fn($x) => array_filter($x, fn($v) => $v != 'O')) ); Proposed "canned pipes" syntax: ------------------------------- fn($x) => |> array_map(strtoupper(...), $x) |> array_filter($x, fn($v) => $v != 'O') ; This syntax: * Resolves the ambiguity: The `fn($x) =>` explicitly "cans" the value for the entire pipe chain, making the precedence clear without parentheses. * Reduces boilerplate: It eliminates the repetition of `fn($x) =>` and nested parentheses, making the code more readable and maintainable. * Aligns with intent: It reads as a simple sequence of transformations, which is the core goal of the pipe operator. This approach effectively provides syntactic sugar for the common case of processing a value through a pipe chain within a closure. It turns the late-discovered defect into a win for developer ergonomics and future-proofing. I understand that implementation feasibility needs to be assessed, but if possible, this could be a more satisfying solution than mandatory parentheses. Thanks to the team for highlighting this issue -- it's sparked a creative way to enhance the feature. Would love to hear thoughts on this. Best, hakre