Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:96680 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 38174 invoked from network); 31 Oct 2016 17:57:16 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 31 Oct 2016 17:57:16 -0000 Authentication-Results: pb1.pair.com header.from=morrison.levi@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=morrison.levi@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.161.173 as permitted sender) X-PHP-List-Original-Sender: morrison.levi@gmail.com X-Host-Fingerprint: 209.85.161.173 mail-yw0-f173.google.com Received: from [209.85.161.173] ([209.85.161.173:34611] helo=mail-yw0-f173.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id AC/71-25911-AF587185 for ; Mon, 31 Oct 2016 12:57:15 -0500 Received: by mail-yw0-f173.google.com with SMTP id t125so8972002ywc.1 for ; Mon, 31 Oct 2016 10:57:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=LhT98vPRHiGiA2KY+lt8zVWeK7M2l2CasCO5oGOoROs=; b=TcJE1na0ACrxtWuUbIdntblpoplS3l8eGnAFbHw0GhWQxtZl01zb8VsRpjviQosqEO JNGw0cc8T63vjBeFiCiqUYpcICFkt5Q8ysblZ14tQPyBjT4eRQr3H+AQkO5vFlNBSpzS atZQJMcpGH/d74ZK4uXsvw8xrspAdJfrr6rEmd5R7mcj3yiJf97as3m4ETtPLhe88XxE UEn3bK5ovEceZzBmRfKlysN724sFuLfGaD7tPbse/lREpTfp69KV/CrRN8+i8PM49A1H RkhYFYk8vwr/wX9bCqeb8HNhJEmadYPNwpzJfQa5upgVbwjHnZptBN/+p5PPaiYUG6p/ Kq1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=LhT98vPRHiGiA2KY+lt8zVWeK7M2l2CasCO5oGOoROs=; b=epf2IiUekJ9Em6ZM6XR9pdm+jZgux+Yc4wj4wbOK+TC3uOGPQoravVsyZqjkQoLocN QurpaOc5dPec7xxzqsDOjagaTkQ7Y9Y3cMbt2s8LgbSGUZBRsAHhJgnjTCDrNT2JI8CL ssqSlXqdE5c39ZOOq1KXdsRUSpmKUG6Ki2ZbmBSilpmBt9r93KWbKNvzzz8psqNUwQqX IrQw9FoDz/YU+ZfQbeeiqzqIJN1pzYJ3B8rHhHirr2WDrjgawD7IEyn399koSq5HgWfB aQmi2o4yY2HjNKv1IVOLLt3BBUmuknuu1h0lZEDE9iG4E/N55txhPfmUnfQjMaMsa+eN jSdw== X-Gm-Message-State: ABUngve4TEVHNnnBDNIl1wrHvjY9G3Yzdt2WdW/rCssfhBSWfyCJ/oMhOZOIK36408Z23XJtpyufs57TGzNOYA== X-Received: by 10.13.206.5 with SMTP id q5mr23881149ywd.301.1477936631722; Mon, 31 Oct 2016 10:57:11 -0700 (PDT) MIME-Version: 1.0 Sender: morrison.levi@gmail.com Received: by 10.13.200.3 with HTTP; Mon, 31 Oct 2016 10:57:10 -0700 (PDT) In-Reply-To: <5219c048-66f1-be9a-ae3c-15633a65e263@garfieldtech.com> References: <44244cfd-c8ad-e0a9-4e70-380a8a8c940c@syberisle.net> <01f2f3da-592b-fd23-709d-ad620422f56d@fleshgrinder.com> <7fb9a5d5-318d-7ed3-59eb-d9845ed5dec1@gmail.com> <5219c048-66f1-be9a-ae3c-15633a65e263@garfieldtech.com> Date: Mon, 31 Oct 2016 11:57:10 -0600 X-Google-Sender-Auth: a-zxsJdlzYfEIGe1A2g2oWBdyUg Message-ID: To: Larry Garfield Cc: internals Content-Type: text/plain; charset=UTF-8 Subject: Re: [PHP-DEV] Allow Iterator to be used with current, next, reset, key functions From: levim@php.net (Levi Morrison) On Mon, Oct 31, 2016 at 11:27 AM, Larry Garfield wrote: > On 10/31/2016 11:26 AM, Alice Wonder wrote: >> >> On 10/30/2016 10:19 AM, Rowan Collins wrote: >> >>> >>> - deprecate reset(), end(), each(), and key() >>> - introduce array_first(), array_last(), array_first_key() and >>> array_last_key() >>> - document replacements for whatever other use cases we can find >>> examples of >>> >> >> As a user I certainly like those names better. Semantic function names are >> a definite win in my view. > > > > Question: Now that we have "iterable" as a type, should we be adding more > array-specific functions or should such operations be designed, and named, > to operate on any iterable? (first(), first_key(), etc.) At least for last and last-key I do not think we should make them work with any iterable. My reasoning is that we do not want to consume the iterator for them because many iterators are not rewindable (such as generators). The first and first-key routines should generally work because `rewind(); valid(); current(); rewind();` doesn't contain a `next()` call. Rewinding without iterating works for generators: https://3v4l.org/O7ZKO Rewinding after a next() call: https://3v4l.org/QI434