Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:130055 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 08A2B1A00BC for ; Sun, 8 Feb 2026 14:44:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1770561889; bh=mlZJNS8g9s59xkgVzFDhKAw/ixDUc03aWCvFkTFx2Zg=; h=Date:Subject:To:References:From:In-Reply-To:From; b=HAU7o19BAdCumbKeBA/o7irX22yqPDAl2GBvVO+PS16WAoD4/+rO0ey452IepjVsF yIkU0cQ09H9wePe/ARMgiv16Rk/262i1PrNLS50RHCtkON4Yr9QV1/Oa8xt2Tv5pDV V2Dq3La7CbQkdOqKqZy97SuC+MMbZuJYkKf/ltZ+wKeTuF30UpI3jySj6qyLIPdq9I o7q0lnSIhxVBK1s0Vwbbd2Bc87h7nx/LWmVF551VX9LQ1UjAdXHIMGjS7YcCgdIrcC sF8sLBWNbdjsB/7+o4recVcOgnkBMoMVh1qitnrzvwfg1VWkd0gAC4UumIneqG1H70 zRh7LHj5X18NA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id C0ADE18004D for ; Sun, 8 Feb 2026 14:44:45 +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,T_SPF_TEMPERROR autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 ; Sun, 8 Feb 2026 14:44:35 +0000 (UTC) Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-59dd490be5fso4165791e87.2 for ; Sun, 08 Feb 2026 06:44:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770561869; x=1771166669; darn=lists.php.net; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=5Rdp/UW30SLot3rU7XeFT4ZMlXk0x7SE+aH6S0ErbSY=; b=ExK3+089El/aH/KMYfVCq+U69J5vhsSFfS4qNGpwFaD0F2wiX5B5wlWGCdfus9ldNi e/SOWDLoVZN3bW13ZWRHBimgHfaCvgJKt0iyZbllHczsmjClCF0JtWq5SiZrmyaOjEJk 9aAC1NQjGltyvb88P2P51b3Wb5zsjAM3NUKeHFzrR0I7joLo7h2FewDbbLbluBbGIhQG SiQhwLhfnJhHkZIbL4d1A0/13+1JUdkzQx+357Qb8wSglQBw4oRRu2NCnK0fhXnGQ2Be L7SvghUnelbzUx9RGdA5bvdBTyIm78+eSU8qp6Yj+K6a2tWdpX3z5pyICYkq0nB9d6tV u5aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770561869; x=1771166669; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5Rdp/UW30SLot3rU7XeFT4ZMlXk0x7SE+aH6S0ErbSY=; b=vvqgZ9GxExJlOP+HIgyud8fs9DfJ8UoA1HdS6x8t2hjHX4M93AylMZajISX17Z1BkP MPb21ub03qKVpjjA0vtjoXyuJcTbspOb5EIkzDgA5rhMiLtfMiiygvkQWzW7zZSLKFxM fw2I2MlEjIXkU1W7jxk0gl/rTZtW1eVBFr3EnBPNwFcPHQJ2uDheswiDJne3rGe2WY9h B/+sMPOu1Jnc9/P1TAc1LAhUN9JsLeRV/vIXY65AeJk5QPyJS5ACFA3j7k1eZ7C40fFd MNehnUFOWkxgSJX3LUvAXPJN+41kTQ86jfgdbbUz7eh1TjI2sPhmE5XBdscV1lNM4kNT cG7Q== X-Forwarded-Encrypted: i=1; AJvYcCUtApWmkD77rJg2Tny4c5UHR7+I7Wolgr9LGVDmLOTinGF3CqKh5h0C8xZNPEQCnRRP0PPil0dIbMw=@lists.php.net X-Gm-Message-State: AOJu0YxM+y+q0+Ivl08vXhGbLWsofW0vUadwqjRPC6Q4EjkB7U6G2ZOS 45dYyDJBapTP74iuJwBDFKnKyuHzb3BOA5iesM9XekdhRN64YHUEAmpdmh5WTw== X-Gm-Gg: AZuq6aJl0TULryURO6r3Sj3k0DgtK0wrLzqlKbSpsb6lYxXOnTVDy5Ui+/gYDZ6mVPx D7r5CQmDgM6N9GS4LpQ0Qglc4VG9SbKp+eiEA0eThIPzcjZScPdTx2IuoZCZNVexMWgNKs0yw1h Udxh43runmapBZHFgR3spGJP4jXrwZl2uTaB7SIuypmB4mfg5jT+nHzNstqV4SKMRROsjvm/0IO DD48sLKvxdScQNd+eUkYu8I/HIUBbqg219ml4qpR4rAVb16oiyOq2eV7Oe8S2sb+B2q4UHyDzwg c2M6uXCOMYEALIhIHwLzYA1QdBq+6LOoA6KR1IVBzHMKlZOyz1SjX4s/yH0lrR9UwVMwohnWhWt RwoMnCbqhwb/KrNgJnhKnf9i4xv6n5pS8UAMjTpjIhqq0i0S7tCUlBdgq5QW/4Xxr+oNz71bAda ZTETpvF7c9d2b+2ytkmHMz4d8= X-Received: by 2002:a05:6512:12c6:b0:59e:38ba:1821 with SMTP id 2adb3069b0e04-59e45169016mr2799033e87.48.1770561868665; Sun, 08 Feb 2026 06:44:28 -0800 (PST) Received: from [192.168.1.16] ([46.181.226.137]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-59e44e25280sm1964394e87.85.2026.02.08.06.44.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 08 Feb 2026 06:44:28 -0800 (PST) Message-ID: <0881820c-3aa8-493f-b1ec-ee40e182ff2c@gmail.com> Date: Sun, 8 Feb 2026 21:44:26 +0700 Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] [RFC] Pipe to return To: Morgan , internals@lists.php.net References: <53c17181-caa4-41a3-b4ab-93069e6bb47b@gmail.com> <36ac22c4-0166-4e5b-b18b-5f64430efb09@varteg.nz> Content-Language: en-US In-Reply-To: <36ac22c4-0166-4e5b-b18b-5f64430efb09@varteg.nz> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit From: vadim.dvorovenko@gmail.com (Vadim Dvorovenko) 04.02.2026 04:58, Morgan: > I'm wondering how this would relate to the function composition > operator, noted in the follow-up RFC. > Basically, would "return" make sense at the end of a function > composition chain, and what sense would that be? > > When $x |> f1(...) |> f2(...) |> f3(...); > is equivalent to (f1(...) + f2(...) + f3(...))($x); > [Aside: personally I find the suggested order of arguments backwards > from every other instance of function composition I've encountered, > but I suppose I could learn to live with it. But that's another subject.] > > and $c = f1(...) + f2(...) + f3(...); > is equivalent to $c = fn($x) => ($x |> f1(...) |> f2(...) |> f3(...)); > > what happens when "f3(...)" is "return"? The intended behaviour is > given for the first case but not for the others (not even the fourth, > which is still the pipe operator). Neither return nor pipe to return can appear inside an arrow function. So  `fn($x) => ($x |> f1(...) |> f2(...) |> return)` is invalid, same as `fn($x) => (return $x |> f1(...) |> f2(...))` `$x |> f1(...) |> f2(...) |> return;` can be rewritten as `return (f1(...) + f2(...))($x)` or as `(f1(...) + f2(...))($x) |> return`. Piping to return should not be perceived as a method of composition. It is some way of defining data flow, pipe here in plumbing meaning.  $x var goes to f1(), then to f2(), and then to sewerage (return).