From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.devel Subject: Re: Why is FUNC in cl-callf not allowed to be an expression? Date: Thu, 16 May 2019 16:37:26 +0200 Message-ID: <875zqabh3t.fsf@web.de> References: <874l631ek1.fsf@web.de> <87pnoqtuhm.fsf@web.de> <87r2961gox.fsf@web.de> <87mujohasa.fsf@web.de> <87a7fn3c6c.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="16694"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu May 16 16:40:31 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hRHYc-0004Bh-Q0 for ged-emacs-devel@m.gmane.org; Thu, 16 May 2019 16:40:30 +0200 Original-Received: from localhost ([127.0.0.1]:59249 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hRHYb-00054D-If for ged-emacs-devel@m.gmane.org; Thu, 16 May 2019 10:40:29 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:56448) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hRHVs-00030a-NV for emacs-devel@gnu.org; Thu, 16 May 2019 10:37:41 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hRHVq-0008EQ-RI for emacs-devel@gnu.org; Thu, 16 May 2019 10:37:40 -0400 Original-Received: from mout.web.de ([217.72.192.78]:45421) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hRHVo-00088U-Kp for emacs-devel@gnu.org; Thu, 16 May 2019 10:37:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1558017447; bh=6cyqqEt4K51P5zDwLiBBktFRIcVPUM5daaafaBYfDcI=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=kNLKzCObLmm1++TXbIclRVYCj9UReTkVXVLYvOorQUm4uDsnRGxQmKPbnDSTcA6Xb honi+o6b9kInjqukyQyXhlHKwkuoiPA8Nrt0VNAWIUrVfVvpBMXnIER532iFH5ZXN9 AsH2GOXbmzLSG3XZ0Oj7OHnh1WgCndCGn1Bn1U1U= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([188.110.143.34]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M0hfO-1gXoHB0rb4-00umdR; Thu, 16 May 2019 16:37:27 +0200 In-Reply-To: (Stefan Monnier's message of "Thu, 16 May 2019 09:12:40 -0400") X-Provags-ID: V03:K1:l9uylNU7WuaqexoOqKnK9a8vLF6HlkyS2oPJ8WqOjKzCCeGNLe6 NI80htr172oKL+8C0kxIaBz2qFGZvfSBn2hlwEzkBQ6MGitcXFAbK7X0+6a88uogG9O9neI BysRT2cVY7m1OJn9DiQTD9JYOOXsQ/0ZaT8aOUBHRoDAtxYIzKw6KJY81sTF8fpJbu6Wbym NqwxTfiZKD7Hjld+b66FA== X-UI-Out-Filterresults: notjunk:1;V03:K0:kj+pAwtwtJE=:d9g7YvM6P2vtIcMWOakpid TEYgWJ12/qDy57cb7kN2uOtZ1Lj8jl9uc0spCj9Ioa4q6iD0KdSA4Li+ZSrAxUjyVwNa+Xrsy WYrFCZaYdXoqDziDoyd1CQpxAPG0SUod5K4c+fSbsBgF0Gvi9e1d9Ne2t6dgFqrWZSPpk/mRh lJjOMLicbKWIT7QZGDsXtiI/RhJVpkUrsp/OJuUTd4UemOY1VmhRdNWx/UBjK0+YrMPafoxKv N1ZGZaPGSFpt5z9LYqw317/hoUuk50jnTtJCLtw3KhB2CaeuAzd6CL6ufTaBcvX24T3+M6KdT cK74vldE+CQdJnoUW2+lBOkql+rwJq38/pguIA52Uu7tiL+ihKbrsuQpYL3QYTQAGuV1AGKZr ercYw+smo4jurtxKRM/K7vJKqUzLAFsdH+UgifKd4NfKbQUBWsE44ON7zl2TJ+nwHDNdjx4PW VSyIMhWLAKfXG+zFE/SbrNVcyeQYkwE1XQVp0aJm7CebSjyHUEB9kk3bOb6/rNxWZ6Ne1Ka+A M1Q/raZLKvWg1+wpgsVdWl4gTtj6AM0NRuXWXmNvQcYIjMm8eMjVvydzjaRzwgaDMsX5PM7K5 NKc5bWcMSsXujxXL289SZcXF6WhNdlsNv8svsofxudUcGjHNjVxnC2SG4ZKOFglZNvU374v/H BGhqUBjJH7/9cx9qgQ4T1nG4EyIm+5B0PBjuF01yomSkb/tv1ja5lJ6iWTIM5qJw02iZ2i4BJ 9bE0v9jvuEGVAnzuPhLqHpNnjoM2qKfKFNI1gEeaLG7DsIDURjJNbtO13ze9oQfSpE2rg3Bn 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:236583 Archived-At: Stefan Monnier writes: > Hmm... that's indeed what I see, but I haven't yet understood why that > is (or rather, why that doesn't happen to your gv-ad-hoc-place). I > guess that qualifies as a bug in gv-synthetic-place (not that it > matters too much: I can't find a single use of it). Well, let's see: ;; works: (let ((l '(0))) (cl-symbol-macrolet ((p (gv-synthetic-place (car l) (lambda (v) `(setcar l ,v))))) (setf p 1)) l) ;; ==> (1) ;; dosn't work: (let ((l '((0)))) (let ((cl (car l))) (cl-symbol-macrolet ((p (gv-synthetic-place cl (lambda (v) `(setcar cl ,v))))) (setf p 1))) l) ;; ==> ((0)) ;; but this works (let ((l '((0)))) (let ((cl (car l))) (setf (gv-synthetic-place cl (lambda (v) `(setcar cl ,v))) 1)) l) ;; ((1)) The problem in the second case is that `cl-symbol-macrolet' is too eager: it also macroexpands the symbol expansion `p' inside the `setf', i.e. it expands the `gv-synthetic-place' macro call, to just `cl', so you get (setf cl 1). That just doesn't happen to my version since it's a function instead of a macro (and the compiler macro seems to be applied later). Any suggestions? Michael.