From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Using gv in map and seq? Date: Wed, 17 Jun 2015 13:39:16 -0400 Message-ID: References: <87egldxn7p.fsf@petton.fr> <878ublkrqe.fsf@petton.fr> <871thbbdd0.fsf@petton.fr> <87twu6z9cc.fsf@petton.fr> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1434562788 27784 80.91.229.3 (17 Jun 2015 17:39:48 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 17 Jun 2015 17:39:48 +0000 (UTC) Cc: emacs-devel To: Nicolas Petton Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jun 17 19:39:40 2015 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 1Z5HJL-0007Wk-0D for ged-emacs-devel@m.gmane.org; Wed, 17 Jun 2015 19:39:39 +0200 Original-Received: from localhost ([::1]:48297 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5HJK-0006wz-0q for ged-emacs-devel@m.gmane.org; Wed, 17 Jun 2015 13:39:38 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47911) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5HJ5-0006w4-LE for emacs-devel@gnu.org; Wed, 17 Jun 2015 13:39:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z5HJ1-0005lr-ID for emacs-devel@gnu.org; Wed, 17 Jun 2015 13:39:23 -0400 Original-Received: from chene.dit.umontreal.ca ([132.204.246.20]:44408) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5HJ1-0005kE-Cq for emacs-devel@gnu.org; Wed, 17 Jun 2015 13:39:19 -0400 Original-Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id t5HHdHO9005332; Wed, 17 Jun 2015 13:39:17 -0400 Original-Received: by ceviche.home (Postfix, from userid 20848) id DF30D6610A; Wed, 17 Jun 2015 13:39:16 -0400 (EDT) In-Reply-To: <87twu6z9cc.fsf@petton.fr> (Nicolas Petton's message of "Wed, 17 Jun 2015 16:40:51 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5340=0 X-NAI-Spam-Version: 2.3.0.9393 : core <5340> : inlines <3219> : streams <1457014> : uri <1962041> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 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:187250 Archived-At: > Just out of curiosity, where is this restriction set? The code I sent was broken (in the list case where we need to set the MAP, the code does (setq map ..) where `map' is an internal variable, IOW it sets the wrong thing) so the restriction didn't actually appear. It should look a bit more like: (put 'map--raw-place 'gv-expander #'funcall) [...] (declare (gv-expander (lambda (do) (gv-letplace (mgetter msetter) map (macroexp-let2* nil ;; Eval them once and for all in the right order. ((key key) (default default)) `(map--dispatch ,mgetter :list ,(gv-get `(alist-get ,key (map--raw-place ,mgetter ,msetter) ,default) do) :hash-table ,(funcall do `(gethash ,key ,mgetter ,default) (lambda (v) `(puthash ,key ,v ,mgetter))) :array ,(funcall do `(aref ,mgetter ,key) (lambda (v) `(aset ,mgetter ,key ,v))))))))) And this "raw-place" should probably be added to gv.el. Stefan