From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ivan Kanis Newsgroups: gmane.emacs.help Subject: Re: defining a setter function with gv.el Date: Mon, 27 Aug 2012 20:10:53 +0200 Message-ID: <87vcg4cij6.fsf@googlemail.com> References: <87ehmsyj2b.fsf@googlemail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1346091071 18163 80.91.229.3 (27 Aug 2012 18:11:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 27 Aug 2012 18:11:11 +0000 (UTC) Cc: emacs help To: Stefan Monnier Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Aug 27 20:11:12 2012 Return-path: Envelope-to: geh-help-gnu-emacs@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 1T63mJ-0000l7-Q7 for geh-help-gnu-emacs@m.gmane.org; Mon, 27 Aug 2012 20:11:11 +0200 Original-Received: from localhost ([::1]:53681 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T63mH-0002Tf-My for geh-help-gnu-emacs@m.gmane.org; Mon, 27 Aug 2012 14:11:09 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:44426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T63mB-0002TO-Fk for help-gnu-emacs@gnu.org; Mon, 27 Aug 2012 14:11:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T63mA-0000X0-5j for help-gnu-emacs@gnu.org; Mon, 27 Aug 2012 14:11:03 -0400 Original-Received: from mail-wg0-f49.google.com ([74.125.82.49]:47651) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T63m9-0000Wr-Ud for help-gnu-emacs@gnu.org; Mon, 27 Aug 2012 14:11:02 -0400 Original-Received: by wgbdt14 with SMTP id dt14so2016207wgb.30 for ; Mon, 27 Aug 2012 11:11:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:cc:subject:in-reply-to:references:user-agent:face :x-hashcash:x-hashcash:date:message-id:mime-version:content-type; bh=mEeeY4e6f/2zaOpTkD6qn/O3E26P/APb2WpP+BW19tY=; b=XICCNV4dlar9HCrGPM12kQ2Y1XQada/ywE5sPk2TG3edUo1J+3Yc7GZOSDh3EULuZP 7ihD59QkoNnzx5vddwAfs1G+/MNkidpSkfHoQ8t5QkHrlTvrpi87LsghPSccGlQzlgjp Wfn+hG9CuQBnK5I0dkdSXEUHWjrVXSKFMg+9HZcsvzr6VGi+GUeG4IlpwA6Pmw+MxD78 A8/CnEl+HFls9ipxTDcsen7wRvViKV2i4hX78UB1c4KTWL8wNN7tanseFyGK5C2D1o4m PWKhZ731lBPwl2PkYpPK6K6y4v9KDvB8G7lyFS2hasUYNzl/6jDxTjfaMz3cgpvCgV+a M9pA== Original-Received: by 10.216.233.208 with SMTP id p58mr6750664weq.56.1346091060508; Mon, 27 Aug 2012 11:11:00 -0700 (PDT) Original-Received: from tao ([89.83.137.164]) by mx.google.com with ESMTPS id o2sm658764wiz.11.2012.08.27.11.10.57 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 27 Aug 2012 11:10:58 -0700 (PDT) In-Reply-To: (Stefan Monnier's message of "Mon, 27 Aug 2012 08:54:42 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAAXNSR0IArs4c6QAAAB5QTFRF IBkXUxMTOCwoTC4qcUY8iFxQmmper31txpaJ/v/8aKZ1oAAAAcVJREFUOMt100tu2zAQAFDCXnUZ oAcIqG68LZULVLQBbwuSiffm6AIRRyeotAySJoVu2+FPpJWWC3/4NKOZocSW/yxWfnJ2+Bdwzhj7 8gleWVy7DXC2rkMNr2V/zRbghXIwthf3VbIA9Ffc71vZCSFyCEsBggtNS8ludwvfmhYA0Vn9o4DP zMWxR7+cPWzAYFzwM0ModtdmcDbDS6i/hT7L+RZof5yCXGrYe5jn2YO6BYMjgY+51tCIAqHgBLwR pwLnGuRjAKyBJkuN4yd4U92uCY1vUr2D/c5b8DuxyQwfOHUeaLqDJhnkkuGXbB56h2C1IVBdgncc bBi6feroa9B6jUDojnQPQKupbyXyeeCE1oT7Oqrt+SnfY3mkiyGA/3AmD3H5g32CcBx6hY8pRkwJ 9PpcjRGobUfprFnhAa1vepwcgMOhwG+pdSgKHFU9HAvoAH6XUl7lDUCCq5Qb6GMbVm3Aj++qDYCt wdBc/YHgOFCmS3mjDMRcSE2qY4E3Q3PVIQRQmeodNH4QEbRUFZzW+VotzwX4yTcRTySOML1qjcE5 hTirVqDHkMAP0PjAywp3d18JZtqzvr9zDYD+GaSKtE6Zlr/DLPNFmOcvBAAAAABJRU5ErkJggg== X-Hashcash: 1:20:120827:monnier@iro.umontreal.ca::0aFf2OsGgIs5JwE7:000000000000000000000000000000000000004pm X-Hashcash: 1:20:120827:help-gnu-emacs@gnu.org::h7oKOkhwzdDPLtn4:000000000000000000000000000000000000000AZRS X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 74.125.82.49 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:86553 Archived-At: Stefan Monnier wrote: > So I think what you mean is that you want > > (my-function) => tree > (setf (my-function) 'shrub) > (my-function) => shrub Yup exactly. > As for you specific question, I suspect that it is answered in the last > few lines of gv.el: > > ;;; Vaguely related definitions that should be moved elsewhere. > > ;; (defun alist-get (key alist) > ;; "Get the value associated to KEY in ALIST." > ;; (declare > ;; (gv-expander > ;; (lambda (do) > ;; (macroexp-let2 macroexp-copyable-p k key > ;; (gv-letplace (getter setter) alist > ;; (macroexp-let2 nil p `(assoc ,k ,getter) > ;; (funcall do `(cdr ,p) > ;; (lambda (v) > ;; `(if ,p (setcdr ,p ,v) > ;; ,(funcall setter > ;; `(cons (cons ,k ,v) ,getter))))))))))) > ;; (cdr (assoc key alist))) > Good grief, does it have to be so complicated for such a simple need? -- Ivan Kanis http://ivan.kanis.fr O Love, O fire! Once he drew With one long kiss my whole soul through My lips, as sunlight drinketh dew. -- Alfred, Lord Tennyson