From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#67456: [PATCH] seq.el: Add functions for mapping over subsequences Date: Tue, 28 Nov 2023 01:29:14 +0000 Message-ID: <3f57efba-4258-4c81-8c57-e6bedd19888f@protonmail.com> References: <6f6d9f2d-fee9-4d1d-a1e4-8c6ce57a0627@protonmail.com> Reply-To: Okamsn Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_x5XJONrxbozzHL5DRQPmyW32AcFP2YgDqVVmGSbqHZM" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35190"; mail-complaints-to="usenet@ciao.gmane.io" To: 67456@debbugs.gnu.org, nicolas@petton.fr Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 28 02:30:24 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r7mvg-00092U-6c for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 28 Nov 2023 02:30:24 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r7mvG-0005sF-Tp; Mon, 27 Nov 2023 20:29:58 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r7mvE-0005rs-Fn for bug-gnu-emacs@gnu.org; Mon, 27 Nov 2023 20:29:56 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r7mvE-0003HB-6i for bug-gnu-emacs@gnu.org; Mon, 27 Nov 2023 20:29:56 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r7mvK-00071g-CT for bug-gnu-emacs@gnu.org; Mon, 27 Nov 2023 20:30:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Okamsn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 28 Nov 2023 01:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67456 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org, Nicolas Petton Original-Received: via spool by submit@debbugs.gnu.org id=B.170113498426940 (code B ref -1); Tue, 28 Nov 2023 01:30:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 28 Nov 2023 01:29:44 +0000 Original-Received: from localhost ([127.0.0.1]:45103 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r7mv1-00070S-J6 for submit@debbugs.gnu.org; Mon, 27 Nov 2023 20:29:44 -0500 Original-Received: from lists.gnu.org ([2001:470:142::17]:58580) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r7muz-00070B-7B for submit@debbugs.gnu.org; Mon, 27 Nov 2023 20:29:42 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r7mum-0005oq-0D for bug-gnu-emacs@gnu.org; Mon, 27 Nov 2023 20:29:28 -0500 Original-Received: from mail-40131.protonmail.ch ([185.70.40.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r7muj-0003FE-L2 for bug-gnu-emacs@gnu.org; Mon, 27 Nov 2023 20:29:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1701134961; x=1701394161; bh=kDHHh21xjkyu/QplJuQHzMDo4+j4MUWslzDY6eTF6F0=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=FEe0tJKop5jAptXAsV+GM5K1fBWGog/3CzbBKNzZ++kkTaTI1rWNRb1aJ1bT3/rUg 6mhJuP1tGkjv8dUdi3dxp0uVxmFy9PUY4jyJeQCyFHoQC+Dxs+/hS74fnpC6nQ0SXP BWNtRvuLwI4SVCEyRF7w70E3S7bYxl68XrXu0fk6PdnBavaDtbigwUMWTAFZHj3tZS DtIMOOLnAkCxo0TwgfkWY94K8Zx7UbpK5IIvSRMLEHJL0z/DiOWWjRYOmDjajYVdOf m2zPeUsW7UyPmwbAARm7oj7agXE90pMMxsItyY2gFqDgONNwEKvTR96WQyU64vW9Xw L5nT8uHQtcWCA== In-Reply-To: <6f6d9f2d-fee9-4d1d-a1e4-8c6ce57a0627@protonmail.com> Feedback-ID: 25935600:user:proton Received-SPF: pass client-ip=185.70.40.131; envelope-from=okamsn@protonmail.com; helo=mail-40131.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:275155 Archived-At: This is a multi-part message in MIME format. --b1_x5XJONrxbozzHL5DRQPmyW32AcFP2YgDqVVmGSbqHZM Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Okamsn wrote: > Hello, >=20 > The attached features work like `cl-maplist` and `cl-mapl`, applying > functions to a sequence and to the remaining parts of a sequence. For > example, `(seq-mapsub #'identity [1 2 3])` returns `([1 2 3] [2 3] [3])`. >=20 > The patch adds a `seq-mapsub`, `seq-dosub`, and a `seq-doseqsub`, > similar to `seq-map`, `seq-do`, and `seq-doseq`, respectively. >=20 > I was looking for an equivalent for vectors of `cl-maplist`, `cl-mapl`, > and `cl-loop`'s `for VAR on LIST`, and think that these would be useful > additions. >=20 > To get the sub-sequences, the code uses `seq-rest` and stops when the > returned sub-sequence is empty according to `seq-empty-p`. This is > similar to how I would do it for a list, using `cdr` and `null`, but is > that a good way to do it for arrays and other sequences? >=20 > Thank you. I've updated the patch to only add the one `seq-mapsub` function, to be=20 more like `seq-mapn` and `seq-mapcat`, and to add an optimized version=20 for lists. Would you like anything changed? Thank you. --b1_x5XJONrxbozzHL5DRQPmyW32AcFP2YgDqVVmGSbqHZM Content-Type: text/x-patch; charset=UTF-8; name=v2-0001-Create-function-seq-mapsub-for-mapping-over-subse.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Create-function-seq-mapsub-for-mapping-over-subse.patch RnJvbSBlYThlZTUxOTc3YzBhNTgzYmMzNzQ4NTZhZjYzMzk0NTE0NGJjN2RkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFN1biwgMjYgTm92IDIwMjMgMTE6MjA6MjggLTA1MDAKU3ViamVjdDogW1BBVENIIHYyXSBD cmVhdGUgZnVuY3Rpb24gJ3NlcS1tYXBzdWInIGZvciBtYXBwaW5nIG92ZXIKIHN1YnNlcXVlbmNl cy4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byAnY2wtbWFwbGlzdCcuCgoqIGxpc3AvZW1h Y3MtbGlzcC9zZXEuZWwgKHNlcS1tYXBzdWIpOiBBZGQgZ2VuZXJpYyBmdW5jdGlvbiBmb3IKbWFw cGluZyBvdmVyIHN1Yi1zZXF1ZW5jZXMsIGxpa2UgaW4gJ2NsLW1hcGxpc3QnLiAgQWRkIG9wdGlt aXplZAppbXBsZW1lbnRhdGlvbiBmb3IgbGlzdHMuCgoqIHRlc3QvbGlzcC9lbWFjcy1saXNwL3Nl cS10ZXN0cy5lbCAodGVzdC1zZXEtbWFwc3ViKTogQWRkIHRlc3RzIGZvcgp0aGUgYWJvdmUgZnVu Y3Rpb25zLgoKKiBkb2MvbGlzcHJlZi9zZXF1ZW5jZXMudGV4aSAoU2VxdWVuY2UgRnVuY3Rpb25z KTogRGVzY3JpYmUgdGhlCmZ1bmN0aW9uLgotLS0KIGRvYy9saXNwcmVmL3NlcXVlbmNlcy50ZXhp ICAgICAgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCiBsaXNwL2VtYWNzLWxpc3Avc2VxLmVs ICAgICAgICAgICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvZW1h Y3MtbGlzcC9zZXEtdGVzdHMuZWwgfCAxMCArKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDU1 IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9zZXF1ZW5jZXMudGV4aSBi L2RvYy9saXNwcmVmL3NlcXVlbmNlcy50ZXhpCmluZGV4IGM5YzZiYjMxMzUwLi4xMjM0ZjUxZTE4 OCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvc2VxdWVuY2VzLnRleGkKKysrIGIvZG9jL2xpc3By ZWYvc2VxdWVuY2VzLnRleGkKQEAgLTY0NCw2ICs2NDQsMjYgQEAgU2VxdWVuY2UgRnVuY3Rpb25z CiBAZW5kIGV4YW1wbGUKIEBlbmQgZGVmdW4KIAorQGRlZnVuIHNlcS1tYXBzdWIgZnVuY3Rpb24g c2VxdWVuY2UKKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcg QHZhcntmdW5jdGlvbn0gdG8KK0B2YXJ7c2VxdWVuY2V9IGFuZCBpdHMgc3ViLXNlcXVlbmNlcy4g IFRoZSBmaXJzdCBzZXF1ZW5jZSB1c2VkIGlzCitAdmFye3NlcXVlbmNlfSwgdGhlIHNlY29uZCBz ZXF1ZW5jZSB1c2VkIGlzIGV2ZXJ5dGhpbmcgaW4KK0B2YXJ7c2VxdWVuY2V9IGFmdGVyIHRoZSBm aXJzdCBlbGVtZW50LCB0aGUgdGhpcmQgc2VxdWVuY2UgdXNlZCBpcworZXZlcnl0aGluZyBhZnRl ciB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbyBvbi4gVGhlIHJldHVybmVkIHZhbHVlIGlzCith IGxpc3QuIElmIEB2YXJ7c2VxdWVuY2V9IGlzIGVtcHR5LCB0aGVuIHRoZSByZXR1cm5lZCBsaXN0 IGlzIGVtcHR5LgorCitAZXhhbXBsZQorQGdyb3VwCisoc2VxLW1hcHN1YiAjJ2lkZW50aXR5IFsx IDIgM10pCitAcmVzdWx0e30gKFsxIDIgM10gWzIgM10gWzNdKQorQGVuZCBncm91cAorQGdyb3Vw Cisoc2VxLW1hcHN1YiAjJ2lkZW50aXR5IFtdKQorQHJlc3VsdHt9IG5pbAorQGVuZCBncm91cAor QGVuZCBleGFtcGxlCitAZW5kIGRlZnVuCisKIEBkZWZ1biBzZXEtZmlsdGVyIHByZWRpY2F0ZSBz ZXF1ZW5jZQogQGNpbmRleCBmaWx0ZXJpbmcgc2VxdWVuY2VzCiAgIFRoaXMgZnVuY3Rpb24gcmV0 dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiBAdmFye3NlcXVlbmNlfQpkaWZmIC0t Z2l0IGEvbGlzcC9lbWFjcy1saXNwL3NlcS5lbCBiL2xpc3AvZW1hY3MtbGlzcC9zZXEuZWwKaW5k ZXggMzQ2MjUwYzFkMzUuLmU5NDIxZDdhNWRiIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3Av c2VxLmVsCisrKyBiL2xpc3AvZW1hY3MtbGlzcC9zZXEuZWwKQEAgLTIzNSw2ICsyMzUsMjIgQEAg c2VxLW1hcG4KICAgICAgIChzZXRxIHNlcXVlbmNlcyAoc2VxLW1hcCAjJ2NkciBzZXF1ZW5jZXMp KSkKICAgICAobnJldmVyc2UgcmVzdWx0KSkpCiAKKyhjbC1kZWZnZW5lcmljIHNlcS1tYXBzdWIg KGZ1bmN0aW9uIHNlcXVlbmNlKQorICAiUmV0dXJuIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgRlVO Q1RJT04gdG8gU0VRVUVOQ0UgYW5kIGl0cyBzdWItc2VxdWVuY2VzLgorCitJZiBTRVFVRU5DRSBp cyBlbXB0eSwgbmlsIGlzIHJldHVybmVkLgorCitUaGUgZmlyc3Qgc2VxdWVuY2UgdXNlZCBpcyBT RVFVRU5DRSwgdGhlIHNlY29uZCBzZXF1ZW5jZSB1c2VkIGlzCitldmVyeXRoaW5nIGluIFNFUVVF TkNFIGFmdGVyIHRoZSBmaXJzdCBlbGVtZW50LCB0aGUgdGhpcmQKK3NlcXVlbmNlIHVzZWQgaXMg ZXZlcnl0aGluZyBhZnRlciB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbworb24uIgorICAobGV0 ICgocmVzdWx0IG5pbCkpCisgICAgKHdoaWxlIChub3QgKHNlcS1lbXB0eS1wIHNlcXVlbmNlKSkK KyAgICAgIChwdXNoIChmdW5jYWxsIGZ1bmN0aW9uIHNlcXVlbmNlKQorICAgICAgICAgICAgcmVz dWx0KQorICAgICAgKHNldHEgc2VxdWVuY2UgKHNlcS1yZXN0IHNlcXVlbmNlKSkpCisgICAgKG5y ZXZlcnNlIHJlc3VsdCkpKQorCiAoY2wtZGVmZ2VuZXJpYyBzZXEtZHJvcCAoc2VxdWVuY2UgbikK ICAgIlJlbW92ZSB0aGUgZmlyc3QgTiBlbGVtZW50cyBvZiBTRVFVRU5DRSBhbmQgcmV0dXJuIHRo ZSByZXN1bHRpbmcgc2VxdWVuY2UuCiBUaGUgcmVzdWx0IGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNh bWUgdHlwZSBhcyBTRVFVRU5DRS4KQEAgLTY3MSw2ICs2ODcsMTUgQEAgc2VxLWRyb3Atd2hpbGUK IChjbC1kZWZtZXRob2Qgc2VxLWVtcHR5LXAgKChsaXN0IGxpc3QpKQogICAiT3B0aW1pemVkIGlt cGxlbWVudGF0aW9uIG9mIGBzZXEtZW1wdHktcCcgZm9yIGxpc3RzLiIKICAgKG51bGwgbGlzdCkp CisKKyhjbC1kZWZtZXRob2Qgc2VxLW1hcHN1YiAoZnVuY3Rpb24gKGxpc3QgbGlzdCkpCisgICJP cHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgYHNlcS1tYXBzdWInIGZvciBsaXN0cy4iCisgIChs ZXQgKChyZXN1bHQgbmlsKSkKKyAgICAod2hpbGUgbGlzdAorICAgICAgKHB1c2ggKGZ1bmNhbGwg ZnVuY3Rpb24gbGlzdCkKKyAgICAgICAgICAgIHJlc3VsdCkKKyAgICAgIChzZXRxIGxpc3QgKGNk ciBsaXN0KSkpCisgICAgKG5yZXZlcnNlIHJlc3VsdCkpKQogDAogCiAoZGVmdW4gc2VxLS1pbnRv LWxpc3QgKHNlcXVlbmNlKQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL2VtYWNzLWxpc3Avc2VxLXRl c3RzLmVsIGIvdGVzdC9saXNwL2VtYWNzLWxpc3Avc2VxLXRlc3RzLmVsCmluZGV4IDcxZmY5OTFj MjE1Li5mYTZmOWVmYTc2MiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2VtYWNzLWxpc3Avc2VxLXRl c3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9lbWFjcy1saXNwL3NlcS10ZXN0cy5lbApAQCAtMTIxLDYg KzEyMSwxNiBAQCB0ZXN0LXNlcS1kby1pbmRleGVkCiAgICAgICAoc2hvdWxkIChlcXVhbCAoc2Vx LWVsdCByZXN1bHQgMSkgJyg1IDEpKSkKICAgICAgIChzaG91bGQgKGVxdWFsIChzZXEtZWx0IHJl c3VsdCAyKSAnKDQgMCkpKSkpKQogCisoZXJ0LWRlZnRlc3QgdGVzdC1zZXEtbWFwc3ViICgpCisg IChzaG91bGQgKGVxdWFsIChzZXEtbWFwc3ViICMnaWRlbnRpdHkgWzEgMiAzXSkKKyAgICAgICAg ICAgICAgICAgJyhbMSAyIDNdIFsyIDNdIFszXSkpKQorICAoc2hvdWxkIChlcXVhbCAoc2VxLW1h cHN1YiAjJ2lkZW50aXR5ICcoMSAyIDMpKQorICAgICAgICAgICAgICAgICAnKCgxIDIgMykgKDIg MykgKDMpKSkpCisgIChzaG91bGQgKGVxdWFsIChzZXEtbWFwc3ViICMnaWRlbnRpdHkgbmlsKQor ICAgICAgICAgICAgICAgICBuaWwpKQorICAoc2hvdWxkIChlcXVhbCAoc2VxLW1hcHN1YiAjJ2lk ZW50aXR5IFtdKQorICAgICAgICAgICAgICAgICBuaWwpKSkKKwogKGVydC1kZWZ0ZXN0IHRlc3Qt c2VxLWZpbHRlciAoKQogICAod2l0aC10ZXN0LXNlcXVlbmNlcyAoc2VxICcoNiA3IDggOSAxMCkp CiAgICAgKHNob3VsZCAoZXF1YWwgKHNlcS1maWx0ZXIgIyd0ZXN0LXNlcXVlbmNlcy1ldmVucCBz ZXEpICcoNiA4IDEwKSkpCi0tIAoyLjM0LjEKCg== --b1_x5XJONrxbozzHL5DRQPmyW32AcFP2YgDqVVmGSbqHZM--