Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:117929 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 18724 invoked from network); 13 Jun 2022 10:25:33 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 13 Jun 2022 10:25:33 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 59D86180210 for ; Mon, 13 Jun 2022 05:12:48 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=BAYES_05,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Mon, 13 Jun 2022 05:12:47 -0700 (PDT) Received: by mail-wr1-f43.google.com with SMTP id x17so6878752wrg.6 for ; Mon, 13 Jun 2022 05:12:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ixMoXSKlxal5xWyhkvXxVRDlxIa4bZOodRrxIUvFXsM=; b=dmIictjJrJGMCCaV7xI7lD7oITOKOnO7qFcshLyZkr/ksRxDrKQkbdWarQrs97OIMU 5RLso58hqM1bLTeNm+vSbpgTbHRaMhISsLu9Nlxo05A+dsR7+ZYZ0XhLYaJEDchuqJo8 tAuafJH2rWPhb8cS5M1A6KodCxe2fDrFz5fHvXrPVmCFGU8ALizFiKRg04im61RVkqEu mJCkaGBN686rN+va7Ua1K5MUUR0++2JiMS6yiUcpXYrdm/50ecoE0ExvEUtanj0V4/sC pa6+R3GxL7LPH7Y5x/ej/xQNGL0a4zHTVa3hnBAig8G3cYACgZjxYNUCx4px0QpZeMTE z1jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ixMoXSKlxal5xWyhkvXxVRDlxIa4bZOodRrxIUvFXsM=; b=phRtAXMqVAccuwj/wlubNX7E5Qn8SGiEX+9opj27U7mo53nNuCUpQ5gnXe7UkgEVV6 3KEPXRPZhyAlQZ78r5KHmpevifPmY6tHjgzIYQxCTp7PUPnR9gO6bDofebUHJMqXFzwD E6uHq8q/HLakcboBcsdGNgdxqa7CYH/DF1DAu90cyfARGyyMIpfZtF2fXf/93opxqDCF TdIvasRYEFshiTACG3+p0OtPRUkOLSb1HhhPydOxtKzAv9f63ohnfHMj1h92lDUT2mSe VMTdNuRPSyW5R9prPN/RHFxLpah+4pCp16h0cIOwjsdkNvpxYQh8bUSOUbGXmaOu0VlR sdKw== X-Gm-Message-State: AOAM533OCDo0Rsbnmoxxy2B3NSwwkHN2QEUXcgiwuaKgA3qOyQZF6deZ Az9BCPt30/bTC+Dd8VETkFE= X-Google-Smtp-Source: ABdhPJzRI2AZJqIpw252QHns2miAvbF+VQbUazATcKW65VJ4s+e1YyIC/M3Lj25w6+H2FXJCIEY6hw== X-Received: by 2002:adf:e5d0:0:b0:210:313a:e4dc with SMTP id a16-20020adfe5d0000000b00210313ae4dcmr55910127wrn.152.1655122366595; Mon, 13 Jun 2022 05:12:46 -0700 (PDT) Received: from arnaud-t490.localnet (2a01cb04054b5b0000c66a4556b36e2a.ipv6.abo.wanadoo.fr. [2a01:cb04:54b:5b00:c6:6a45:56b3:6e2a]) by smtp.gmail.com with ESMTPSA id i10-20020a05600c290a00b0039c7c4a542csm9164249wmd.47.2022.06.13.05.12.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jun 2022 05:12:45 -0700 (PDT) To: Robert Landers Cc: internals , mark@demon-angel.eu Date: Mon, 13 Jun 2022 14:12:44 +0200 Message-ID: <5211542.0VBMTVartN@arnaud-t490> In-Reply-To: References: <2b35605f-8da8-46b1-aec3-00bd1bfe47fd@www.fastmail.com> <827956617.0ifERbkFSE@arnaud-t490> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Subject: Re: [PHP-DEV] [RFC] Short Closures 2, aka auto-capture take 3 From: arnaud.lb@gmail.com (Arnaud Le Blanc) On lundi 13 juin 2022 12:28:17 CEST Robert Landers wrote: > From a maintainer and code review aspect, I prefer the longer syntax > because it is 100% clear on which variables are being closed over and > utilized in the anonymous function. fn($x) => $x + $y is pretty clear > that $y is being pulled in from an outer scope but if you start > getting into longer ones, it can get non-obvious pretty quickly... > > $func = fn($x) { > $y[] = $x; > // do some stuff > return $y; > } > > If $y is pulled from the outside scope, it may or may not be > intentional but hopefully, it is an array. If anyone uses the name $y > outside the lambda, this code may subtly break. This is true for any function that uses the array-append operator on an undefined variable.