From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Gnu Elpa: stream.el: Add some more basic stream operations Date: Sat, 11 Jun 2016 03:34:58 +0200 Message-ID: <87r3c433ul.fsf@web.de> References: <87twhbmwbx.fsf@web.de> <878tynl720.fsf@petton.fr> <8737onlapw.fsf@web.de> <87ziqu7ew9.fsf@petton.fr> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1465608953 28397 80.91.229.3 (11 Jun 2016 01:35:53 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 11 Jun 2016 01:35:53 +0000 (UTC) Cc: emacs-devel@gnu.org To: Nicolas Petton Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jun 11 03:35:44 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bBXpw-00047W-C0 for ged-emacs-devel@m.gmane.org; Sat, 11 Jun 2016 03:35:44 +0200 Original-Received: from localhost ([::1]:45274 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bBXpu-0002AW-W1 for ged-emacs-devel@m.gmane.org; Fri, 10 Jun 2016 21:35:43 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34886) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bBXpM-00028F-4v for emacs-devel@gnu.org; Fri, 10 Jun 2016 21:35:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bBXpI-0005EW-20 for emacs-devel@gnu.org; Fri, 10 Jun 2016 21:35:07 -0400 Original-Received: from mout.web.de ([217.72.192.78]:49932) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bBXpH-0005DV-NZ for emacs-devel@gnu.org; Fri, 10 Jun 2016 21:35:03 -0400 Original-Received: from drachen.dragon ([94.217.122.112]) by smtp.web.de (mrweb103) with ESMTPSA (Nemesis) id 0MSrgv-1b3TL40ha1-00RsRw; Sat, 11 Jun 2016 03:34:59 +0200 In-Reply-To: <87ziqu7ew9.fsf@petton.fr> (Nicolas Petton's message of "Thu, 09 Jun 2016 13:58:14 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.94 (gnu/linux) X-Provags-ID: V03:K0:YtuA1wXZIpg/UIT/H+wgWIYjvT2lN9GeFqoQ1VHKFd+u0vrASo3 Hh9k5QEfrHmtvgcbFYjz/FIH/DSrJan/XBCEhP0zB8bVXbjx5pl9a7Cy/ckonUbD90oYQk7 U7/aLDaekug/IQns57oYlk4JMVDG/9ZWul+myIywNXCGge6wKRUnDWWZN5vyie2P270QzjR qbgGMStkEMN/sCn1fnpyw== X-UI-Out-Filterresults: notjunk:1;V01:K0:xBNH36WVKlo=:0wA71MLswYyj5TurQj5Bf+ 5xOIJ8QdZK6GY5r68YtCZ6LAYKeWIKaiUp86PFCZO0C9sMnrdpvfsVUqEnDA2vHXVYWpmglg9 WQM4tdKT0LAnXLzFFOvbWrFopafnWoL618fgVYf8jQW2TyVMIuYPy6YVXFAW4+kqraJsIyDZn iX5bHFm2DO8b3T603sofOG/ZmC99dE102sNe5kDpoC969H3dGR4Nr0rh3r4A4HwkBovrysWjT PMU5WVoiagrEPyfq9EZu9hbo2g6qf3rWJgETOFoJtf6fdcZa+1ShE4Sy9ity3l+mvGzPa4sf4 ANUMZOkZJJsSFpH/Xai/VBEQmI+WxFQFiPLC/+1C5FW2VXmjJ746odMeVtIV69cbUPAzsewCb ZA+z9h3tBGb0IIBVWRZCh4akduM1dY3N2IskOhz+390cLlKmePV1K8i2F7nGzNnX7SMmjRTNF U1jc5ROSBP53sQxWqltt/gKosWe1y41AZ0R0BIq+KJImPdSJ6NKX/9jI9klafducMADuOIosx I2BIbEDdcmvz84WCBFzV3Z9McUoKmYevU2s0mqKfztGRM24APhxHtVCTAZNtju96suI3sCKfb TqckFS4gSziZkLBn4bKyX7EmNkUeWwEhjynz7qMepfB8pwy1QoqnwgQwpaYAxWDuz9n874B4r eD0rCExGNNcZLI1Y3sWj5GZIfzYukyIp/XTDSBwGpTUoUdE65BP2Lx4VmKYd+SAA6VeWRJDDM w+9kxVNOeG51s91wwGM8xZWrUR0MhMO6BmpWRfJn6YM36cm8R3L3R2ua3gOyOeBWnjrsZxL0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.78 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:204280 Archived-At: Nicolas Petton writes: > > I updated the patch. Hmm, seems my implementation of `stream-concatenate' is too recursive "when executed": #+begin_src emacs-lisp (seq-into-sequence (stream-concatenate (seq-map (lambda (n) (stream (list n))) (stream (number-sequence 1 500))))) stream-empty-p: Lisp nesting exceeds `max-lisp-eval-depth' #+end_src The standard approach seems to work in this case OTOH, e.g. with (don't forget to eval the example with lexical-binding turned on!): #+begin_src emacs-lisp (defun stream-concatenate (stream-of-streams) (while (and (not (stream-empty-p stream-of-streams)) (stream-empty-p (stream-first stream-of-streams))) (cl-callf stream-rest stream-of-streams)) (if (stream-empty-p stream-of-streams) (stream-empty) (stream-cons (stream-first (stream-first stream-of-streams)) (stream-concatenate (stream-cons (stream-rest (stream-first stream-of-streams)) (stream-rest stream-of-streams)))))) (progn (seq-into-sequence (stream-concatenate (seq-map (lambda (n) (stream (list n))) (stream (number-sequence 1 50000))))) nil ;Don't display the result, please ) ==> nil #+end_src So I guess we should replace the current implementation. Michael.