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: Generators (iterators) for Gnu Emacs Date: Sat, 06 Dec 2014 01:13:18 +0100 Message-ID: <87egsdbppd.fsf@web.de> References: <877fy77zhp.fsf@web.de> <87k326d4ww.fsf@gmail.com> <877fy6rp2o.fsf@web.de> <548230FB.40307@dancol.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1417824853 3455 80.91.229.3 (6 Dec 2014 00:14:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 6 Dec 2014 00:14:13 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Dec 06 01:14:06 2014 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 1Xx30e-0002LF-7o for ged-emacs-devel@m.gmane.org; Sat, 06 Dec 2014 01:14:04 +0100 Original-Received: from localhost ([::1]:52983 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xx30d-0007Tj-Om for ged-emacs-devel@m.gmane.org; Fri, 05 Dec 2014 19:14:03 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57540) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xx30K-0007Tb-Gp for emacs-devel@gnu.org; Fri, 05 Dec 2014 19:13:50 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xx30D-0002j8-QN for emacs-devel@gnu.org; Fri, 05 Dec 2014 19:13:44 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:45362) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xx30D-0002iA-JT for emacs-devel@gnu.org; Fri, 05 Dec 2014 19:13:37 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Xx30C-00026v-4V for emacs-devel@gnu.org; Sat, 06 Dec 2014 01:13:36 +0100 Original-Received: from ip-90-186-215-205.web.vodafone.de ([90.186.215.205]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 06 Dec 2014 01:13:36 +0100 Original-Received: from michael_heerdegen by ip-90-186-215-205.web.vodafone.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 06 Dec 2014 01:13:36 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 31 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: ip-90-186-215-205.web.vodafone.de User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) Cancel-Lock: sha1:Jp2LMUID/y1DPWQvTW3KHsAVBa0= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:179074 Archived-At: Daniel Colascione writes: > Assuming both packages are suitable for inclusion into core, we can > definitely make them work together. Thinking a bit about it, I guess my (only) constructor: (defmacro gen-make (&rest body) "Return a generator that evaluates BODY to generate elements. (let ((this-element (make-symbol "this-element"))) `(let (,this-element) (lambda () (if (eq ,this-element 'gen-done) 'gen-done (setq ,this-element (progn ,@body))))))) is just a special case of Daniel's `lambda-generator': (defmacro gen-make (expr) `(lambda-generator () (while t (yield ,expr)))) modulo (at least currently) the different kind of termination (right?). So, all of my stuff can be expressed in terms of Daniels generators. Which means that it would be a suitable extension to Daniels package, defining some special generators, the transducers, and the cache, for his more general kind of generators. It could then be named "generator-x" or so. Michael.