Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:104698 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 90032 invoked from network); 13 Mar 2019 23:52:35 -0000 Received: from unknown (HELO mail-pg1-f170.google.com) (209.85.215.170) by pb1.pair.com with SMTP; 13 Mar 2019 23:52:35 -0000 Received: by mail-pg1-f170.google.com with SMTP id v12so2370445pgq.1 for ; Wed, 13 Mar 2019 13:42:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=loLKx07iCVHJtG8m7rL+TlCSt0Go8wDhQ9C8MiKxUdw=; b=dzNgK1yProKe2yLzNTjNaqO049cLRipDFpSRu6Mg8Rmgs+p1Kc9Nn3n5NWo7OCTffk Jb695vc8pSJ/JOB62NQi1NobHguC2M/B1i4vYNxgZiJ2EpG+A1qWCHymTvU70z0k67Os Js83nYupDUxhAYC6c/nM6OT3gCY9pl+vhAigDXyPkXwPlDReb7VsrQQxeY0k/xpYXk+9 OH5BsskENtxooah1klut2WmIgaXv6koKv0cBklsUy0LCkxDenKIp7dDwIrzNQtZYf1E1 w2aoCoiXfiHdj3l8fsoBCjMu+HAxB8HnTxdeQZ5nbUamGUoOnFbqHzjdVyH9r2L9lBpd w2+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=loLKx07iCVHJtG8m7rL+TlCSt0Go8wDhQ9C8MiKxUdw=; b=AtOqFxtikZg1W8OEjMQYOQz6VPSq9JQ0gWF28gwAsFzAJjJPmWl0myEgF4EZTFhLoj 8XQjC0AdfykFtskSMUS+XyeGx/L0+j7Oe4hYplrskDsVP0w4wupd84cvWrP4jkjRKmKr Ysktt4vbUZuR7RLNwyxg/6t85JcIAY+PWMdLtv2QyP1NSwH2Ps18wIypiFTW/iEz6Oni CaCVVdRJs/f2z/wc6QELHIy07r+UW9owJIBE3DSseuawZdI0z9GWMz54SgpR82tiwNnr flwoCV6Pr6HgWtNDdR5HqUy2me/VomsGv4fcW5wBrbSnbmjbzc4ggbKhcSUa5vKZ0cIX LMZA== X-Gm-Message-State: APjAAAWQHR+mzpUMTA8oZt/jmMUM3HRZ9P3F9wWlITh018AQnMe0X2bk XwPBDxBopiLj+qi8THKjKrqYXPY= X-Google-Smtp-Source: APXvYqzp+M0Yq3OB2nyLer8jk0gwz3rClUsDr+SYgghycpvK06YK0cqPa6Lu5f/eQVZk7YmX7a3E4w== X-Received: by 2002:a63:525b:: with SMTP id s27mr12116444pgl.155.1552509766483; Wed, 13 Mar 2019 13:42:46 -0700 (PDT) Received: from Stas-Pro-2016.local (c-24-4-176-254.hsd1.ca.comcast.net. [24.4.176.254]) by smtp.gmail.com with ESMTPSA id k7sm16028562pgo.60.2019.03.13.13.42.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Mar 2019 13:42:45 -0700 (PDT) To: Larry Garfield Cc: PHP internals References: Openpgp: preference=signencrypt Autocrypt: addr=smalyshev@gmail.com; prefer-encrypt=mutual; keydata= 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 Message-ID: <85417a73-a391-c9ad-49aa-5b88c65b0900@gmail.com> Date: Wed, 13 Mar 2019 13:42:44 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.5.3 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] RFC Draft: Comprehensions From: smalyshev@gmail.com (Stanislav Malyshev) Hi! > I think my main point of feedback would be to stick closer to existing PHP > syntax, even if it costs us some brevity. I would prefer > > $gen = [foreach ($list as $x) if ($x % 2) yield $x * 2]; > > over > > $gen = [for $list as $x if $x % 2 yield $x * 2]; Agree here. There's a principle of least surprise - "for" in PHP looks the certain way, and sequence iteration looks certain way, and it's better to work within those paradigms than import different way of doing the same from Python. Especially given that for/foreach look pretty close, and remembering in which context "for" is ok for sequences and in which not is going to be very annoying. It's much easier to remember "for is always for(x;y;z), foreach is always foreach(x as y=>z)". Also agree about parentheses - reading a complex expression without separators would be annoying. I know python loves to do this but even in an IDE with highlighter it's not always easy to quickly figure out which part belongs where. Delimiting it would make it easier IMHO, and also allows again to carry over the intuition of how foreach() and if() work from already known constructs. > Finally, Python makes a distinction between list comprehensions using [] > and generator expressions using (). This proposal effectively corresponds > to generator expressions, but uses the [] syntax. I'm wondering if that > will cause confusion. Do we need this distinction for anything useful? -- Stas Malyshev smalyshev@gmail.com