Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:104815 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 80658 invoked from network); 20 Mar 2019 03:43:50 -0000 Received: from unknown (HELO mail-pg1-f170.google.com) (209.85.215.170) by pb1.pair.com with SMTP; 20 Mar 2019 03:43:50 -0000 Received: by mail-pg1-f170.google.com with SMTP id y3so375639pgk.12 for ; Tue, 19 Mar 2019 17:35:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=/CvnbYxQm7wAwvVtCTmSfJbEvkbYWiUKa/ev2ZXgRlA=; b=CKEO37RUJMcR7pol62A4TmLL2aVbPV0i2UsJYsfEunGMLPL4cEf+Ia1i3iAMq0Skhb 7nfYgSNwxvpq5q7Hqhogh/O76f80IuVXdp0zFLIjn66YwaWsxfEU9rFTQ5/w2nrGVneh YvixrY9gWdHNq9wMnXtAaLPWrN/C3WRTDS/R82tUVlt6Th9z154FkhEE42XCAsdeEgk9 TXHGllXFeF+r33yKVYyMzww2BuIyb6jpLWjgLCPgf2zxRE4ToqWEM+EoLZfi5e0ZVdNN g4LFO18AgqIHBd6qG370V8ciKPTbZ6XwBX8Kum8JkAa2PbYRe3z46H1QVSjgKlNIcNb9 9+Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=/CvnbYxQm7wAwvVtCTmSfJbEvkbYWiUKa/ev2ZXgRlA=; b=cGRbjX0WZkCZIxCmBHdzukFFGE5mNzOiw7ELWxhQZdmuXPnk3xxofiVjqRD6MUFvJX rAJvDqTQ9vLeI/j5kbhkWpCIXPIZ6+326WxfaVtQEimyBVIAXw3Hi4siEHPBeuCpu9Lv dyXj3fGj9jQLTj6KW1I0XwUPuvhI5aTM8nNM7R1aoLi4A31v5z+7CefQGrxeWZXTynqb aQo/1BmmPaK77/gx/PWtExsj71ZlnX64lgtUx7IY/9y04uUoMf0rwdTOI2zwLsHv0f62 02bBwpiUGLLQ4Xz6eRoaNG9C9/fWK73ZhBegxBysy1a4nVdVVaV33JwQxfriIaQ4i3NY bX8Q== X-Gm-Message-State: APjAAAXAj9aTLJVXbE5WflacW1LutZmAuPbQ4oCCWnbHCIEFs6+O9u4S /9r1QpnEny3cS7dlrSsmJ5DLfbk= X-Google-Smtp-Source: APXvYqype5vERHGOce3vbSziVwkmSekurROPOm1tc7/1NImjovNMAs1WWjWgrB0LrUWS5OZIbQeguQ== X-Received: by 2002:a65:514a:: with SMTP id g10mr4564309pgq.400.1553042134684; Tue, 19 Mar 2019 17:35:34 -0700 (PDT) Received: from Stas-Pro-2016.local ([2601:646:8d01:8ee0:254e:1bc8:e60d:895b]) by smtp.gmail.com with ESMTPSA id f7sm216879pgf.48.2019.03.19.17.35.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Mar 2019 17:35:33 -0700 (PDT) To: Larry Garfield , internals@lists.php.net References: <85417a73-a391-c9ad-49aa-5b88c65b0900@gmail.com> <5c8ea43d.1c69fb81.e50f1.7d18SMTPIN_ADDED_MISSING@mx.google.com> <0d34b3b1-866e-4bab-9a8f-3c70f1fc9721@www.fastmail.com> Openpgp: preference=signencrypt Autocrypt: addr=smalyshev@gmail.com; prefer-encrypt=mutual; keydata= mQMuBE9mqaARCACFSqcGmNunkjQQu3X+yXnTmFeEkvM4JXZTOBdR8aEevNGmmFEfyvjaDjWi 9hcwp4E/lYtC+P7VsVjM1OSX9eq0jC/lGL0ZyRXek+mNy0n5H1NSuTpf9Y18LMqhc4G+RU+L cNiZ9K0DJuOOvNLPxW7OHZguxb3wdKPXNVa2jyRfJAKm2uaJJMT1mTmFT9a0Q8SKr+mUrrJk uG0H2o6SzrKt8Wwoint1eh67zVsJaJtQFchnEZnlawIcqP2yC4nLGR3MkubowxoEBYCZet18 aHVVRbvpG2Qtob8Lu5xrsGbmXymTkHTdpvkfcJFADa8MzOL90zOxXwbGfbIZOlh5En8jAQCX lfnx2eQL3BSW/6XANa51dbWiEp1d1BAkpGKtZvlk0Qf+M9WAi+9aXMe3xP5krxtgnRNUf2WN 6Zdy2MxL1RRJCFbytLhl0ronC49BsGYVGshdEH8xhBbiIOJKuVZ/DTl9bEm7P9c7CC7iJyVC khUAhouH6xzZQNLR+RU+QebYzXypVfl99Qk7EdMmr/WAZCHLuvanyqepC5EBsa3VnAfQemSN oBeGBKWWLiOsPjvS72+y1z4RUMAfXHn4l/sFMt8zt7/74AmJPwZquV41p4mPO12V4+xPyc6R sB84sfsk2QVivU8w8AkvGQeYjXoz7Iwao95+fWteVzZ36KRQvUckP8pGjHlDXnHxJ0HI1I/k OBZSjwRwUf0dd73y6erPhbLk+gf+NdI3H9KGJBzG5/rVyWKwUeQ9d5ud4jTJRkQGvAP5pg76 vEa9dogbpe4W5Z+0BfbiJSnQmQWSHiZddj/t33ptbup44Ck6ZTgdlmFYMLF1hR47PIZTDKER EuKYGci/vq8snZvEJP9YCw/TtiHcMdrMKcY/+Lp8lQO0GHLPB9glVhnC0db6l1Xpg1CMI8/R ozBMcij30EgATggC/y2zbiqAFoS9FN9nXPbe4phStqABEyeZ+nXudt7PUYTjVgcrqo8bHZCi sBobWC7OnKyUzxVxzUeuPkIfmZuzkLaMw2McQdvwwsNvQ0DzaLP30c1Xsm/7EIYJcOWpzlVJ 5QrdmE0/BbQyU3RhbmlzbGF2IE1hbHlzaGV2IChQSFAga2V5KSA8c21hbHlzaGV2QGdtYWls LmNvbT6IegQTEQgAIgUCT2aqtAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQL3lW vF2gS12XMwD9HuRIolSwIK77u8EY461y2u6sbX36n5/uo/LDQuxoi3sA/0MvpnvzOhv9Iufv vsZEj3E7i3h+iD5648YMwfTFCij+uQINBE9mqaAQCADfZPMpjZkkGZj3BY/7ApoLq4mwqzbh +CpLXwNn20tFNvSXfb8RdeXvVEb7Scx+W9qYpiaun2iXJgCVH8fgpZpR856ulT1q6uCG++CX ubEvip/eJkZl93/84h04KQJwsgOrAh0Om3OePRn8Pr+++0LNS0EL8uX/YHeTOGOnnmTqYTey SBVFdov6L4mepddfjekicKQqhL7mZh/xuq29JijT0uNNX8v4vDWQDu5dlAcdd+uB3gcXMD/P ginD11zp+6wtrWCm/+yBqpvDwXQX5PGUnwvbRfl7Ay3MmwmoXiecZMg0dwTSc7e0lhB4HGRH ZdBMJB4rHUVGdzqujK/ctOvrAAMFB/0Utb76Qe6sCMlHxVAmeE/fbo7Pi05btZ/x01r67dHf aMSP0riCKJ7M0OW+jAXtu9+z/BVnYisW67WWfxl2cS5tZDgiHgJARXWUOO72+sScHP8KQmTl 1z16gyKbwY3SmyBkwcpOL35nhUWNLy93syPoY6sZUTikr2bZYukHDQ33XBPs4e6MbWKfsa9q aVmnlOF3k5UqChjutfHaEa4Q7VP4wBIpphHBi9MI16oJIzzBPbGl2uoedjwiZ6QeQZnSuOVY ZxU2d3lRA8PrtfFN1VSlpEm/VcAvtieHUYWHN0wOu+cp3Slr5XJVNjTjJhl28SlinMME54mK AGf2Ldr/dRwXiGEEGBEIAAkFAk9mqaACGwwACgkQL3lWvF2gS126EQD/VVd3FgjLKglClRQP zdfU847tqDK4zJjbmRv5vLLwoE0A+wbrQs7jVGU3NrS0AIl5vUmewpp2BKzSkepy23nWmejw Message-ID: Date: Tue, 19 Mar 2019 17:35:32 -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: <0d34b3b1-866e-4bab-9a8f-3c70f1fc9721@www.fastmail.com> 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! > Honestly, I cannot think of any case where I'd use a comprehension > where I would definitely want an array and not a generator. In the > majority case both work equally well, cool, but I don't know when I > would even use an array-dependent version. They wouldn't work equally well. Generator is only sequentially-addressable, and array is random-addressable. And in PHP people do a lot of random addressing of arrays. Also, many functions which accept arrays (and array type) won't work with generators. > And converting from a generator to an array is trivial; the other > way, very not so much. Well, doing everything not using this syntax is trivial - if the point is not doing anything that is already trivial, then we don't need this syntax, as iterating over an array/sequence and applying an operation to it is already trivial in both array and generator contexts, it's a two-liner function in most cases. If the point is to add syntax sugar for most frequently used cases, then I claim that the most frequently used case is definitely not the generator one. I don't think I ever used the generator one in python (I use list one all the time), and I maybe used analogous construct in PHP once or twice (and again I use array_map and more complex syntax for array transformations all the time). BTW, how it's not trivial to make generator from array? function generate($array) { foreach($array as $k => $v) yield $k => $v; } Is there something I'm missing here? -- Stas Malyshev smalyshev@gmail.com