From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Augusto Stoffel Newsgroups: gmane.emacs.bugs Subject: bug#67456: [PATCH] seq.el: Add functions for mapping over subsequences Date: Fri, 01 Dec 2023 21:14:13 +0100 Message-ID: <87bkb9y92i.fsf@gmail.com> References: <6f6d9f2d-fee9-4d1d-a1e4-8c6ce57a0627@protonmail.com> <3f57efba-4258-4c81-8c57-e6bedd19888f@protonmail.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32049"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: okamsn@protonmail.com, nicolas@petton.fr To: 67456@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 01 21:15:14 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 1r99ur-00087k-Ez for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 01 Dec 2023 21:15:13 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r99uY-0003NL-TV; Fri, 01 Dec 2023 15:14:54 -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 1r99uY-0003N5-4z for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2023 15:14:54 -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 1r99uX-0003yk-Sk for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2023 15:14:53 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r99ug-0000Na-EZ for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2023 15:15:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Augusto Stoffel Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 01 Dec 2023 20:15: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: Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" X-Debbugs-Original-Cc: Okamsn , nicolas@petton.fr, 67456@debbugs.gnu.org Original-Received: via spool by 67456-submit@debbugs.gnu.org id=B67456.17014616761383 (code B ref 67456); Fri, 01 Dec 2023 20:15:02 +0000 Original-Received: (at 67456) by debbugs.gnu.org; 1 Dec 2023 20:14:36 +0000 Original-Received: from localhost ([127.0.0.1]:56130 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r99uG-0000MF-Gm for submit@debbugs.gnu.org; Fri, 01 Dec 2023 15:14:36 -0500 Original-Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]:47597) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r99uA-0000Ly-S9 for 67456@debbugs.gnu.org; Fri, 01 Dec 2023 15:14:35 -0500 Original-Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-a1a2615e909so138858166b.3 for <67456@debbugs.gnu.org>; Fri, 01 Dec 2023 12:14:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701461656; x=1702066456; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=hEMADib7T0f+UZQ3+DtdZ9UY6OllWFXrR7FVSUQSVAo=; b=SBnHza2YZpaHdNZOcMSYUJpsg9VsMxc26y3wuIGA7vzvUJ2B45WOsyID2ZcF5BHqIh OT08sG3XUObT7wywPYNLAXyXEMatRkOx6xEY63tnmXTpKhlz8vEBWwoKTTULBP/SE27T jxcESxgOGPwemDX62n2566eE5NbCvS2L3vrFin+Lxay3WepPZX4xUSUqvujzH/CUZFtO iB79JmMmr8aLcF6c8/vvolwz3MdquO0qJoKgSSdo3r6plVNOP+Hwn1038C0oFAACiCeZ a+6nHmVtPPbdKlHlF+pqljuNLT8dDL/lKKNMEGFmmTl5HnFkGOKvf/PGnDKba6qFl+Ma 0aPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701461656; x=1702066456; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hEMADib7T0f+UZQ3+DtdZ9UY6OllWFXrR7FVSUQSVAo=; b=jtAXsABR/ppl8oiyjEzwaSElZLXCNN3gVs+jYwAqED+CLf3Xok64K8NEfMcM9kN1wF QKvKaNywXvGtciBznuP7G+DdeNY2i1gBaanVEZUqdHHxGp6N+zy3qXqMo0D+FAUS/XGB ApTGWIw+B6FFK/1PGNxz/m0WT9+EP4dkXC00o1x6WcK50M3fEn44H8PbC+PYXtU1gHgc Or+VtMJHvWgUzEfTKkeqf1BdyJmymaMMy0Cqz6RGmhzXEep9xkxSOisA7LrsPZxHmP23 +86NcLebqdqkbvnVdR47ppS8DMNY/mvGICo3Yy8WYKIGs4eWiKzDVt12ycOzXOimdrBg HD2g== X-Gm-Message-State: AOJu0YyTNqhtB3dG+bJLoZVa2aJy8bUjKpMqrYxDq7nTsdLmmT9LBa3e 3ttvpfh/7e37sJHWn8s6k7A= X-Google-Smtp-Source: AGHT+IGRGrv2cnXcGohPSxBHIm8hDFE9vbyL2FRT4hQOnLtGZXy2zckg7KnyNnvNmLVd80oVqfpbCw== X-Received: by 2002:a17:907:511:b0:a19:a19b:4268 with SMTP id wj17-20020a170907051100b00a19a19b4268mr747824ejb.211.1701461655766; Fri, 01 Dec 2023 12:14:15 -0800 (PST) Original-Received: from ars3 ([2a02:8109:8a87:ff00::1fd7]) by smtp.gmail.com with ESMTPSA id f20-20020a1709067f9400b00a121e5d002bsm2280793ejr.174.2023.12.01.12.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 12:14:14 -0800 (PST) In-Reply-To: <3f57efba-4258-4c81-8c57-e6bedd19888f@protonmail.com> (Okamsn via's message of "Tue, 28 Nov 2023 01:29:14 +0000") 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:275338 Archived-At: On Tue, 28 Nov 2023 at 01:29, Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Okamsn wrote: >> Hello, >> >> 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])`. >> >> The patch adds a `seq-mapsub`, `seq-dosub`, and a `seq-doseqsub`, >> similar to `seq-map`, `seq-do`, and `seq-doseq`, respectively. >> >> 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. >> >> 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? >> >> Thank you. > > I've updated the patch to only add the one `seq-mapsub` function, to be > more like `seq-mapn` and `seq-mapcat`, and to add an optimized version > for lists. > > Would you like anything changed? > > Thank you. This operation has quadratic complexity for anything other than regular linked lists. I'm not sure it's a good idea to add it to a generic sequence library...